题目描述:
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: “Hello, my name is John”
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。
class Solution { public int countSegments(String s) { } }
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-segments-in-a-string
解题思路:
思路一:
首先判断s是否引用了字符串,null的情况直接返回0,不是null则利用trim()方法掉字符串两边的空格,然后统计字符串中空格块的个数(指一个空格或者多个空格连在一起),空格块的个数加1就是字符串中的单词数。
思路二:
首先判断s是否引用了字符串,null的情况直接返回0,不是null则利用trim()方法掉字符串两边的空格,然后再利用split()方法将字符串以空格进行分割放到字符串数组中,统计字符串数组中非空字符串的个数。
注意:
在Java中以空格为分割符完成字符串分割后,若两单词间有 x > 1 个空格,则在单词列表 strings 中,这两个单词间会多出 x − 1 个 “空单词” (即"")。
代码实现:
class Solution { //方法一 public int countSegments(String s) { if(s == null) { return 0; } //先去掉字符串俩边的空格 s = s.trim(); if(s.length()==0){ return 0; } //统计出空格块的个数 int count = 0; for(int i = 0; i < s.length(); i++){ if(s.charAt(i) == ' '){ count++; while(i < s.length() && s.charAt(i) == ' '){ i++; } } } //空格块的个数+1就是字符串数 return count + 1; } //方法二 /*public int countSegments(String s) { if(s == null) { return 0; } //先去掉字符串俩边的空格 s = s.trim(); if(s.length()==0){ return 0; } //以空格将字符串分割 String[] strings = s.split(" "); int count = 0; for(int i = 0; i < strings.length; i++) { //统计非空字符串的个数 if(strings[i].length() != 0) { count++; } } return count; }*/ }