题目描述:
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: "Hello, my name is John" 输出: 5
解题思路:
原始思路就是,统计一遍只要前面的字母不是空格,那么遇到一个空格我就认为是一个单词,统计次数加1.
我解释一下代码中几个变量的含义:
preSpace:表示前一个字母是不是空格,是位true,不是为false
havaLetters:表示这个字符串中到底有没有出现过非空格的元素,也就说有没有出现单词。有为true,没有为false;当时设置这个变量是为了避免字符串不是以空格结尾的情况,那样就会少统计一个单词了,所以最后判断如果单词不是以空格结尾的并且出现过单词就要把统计次数加1,。
代码实现(Java语言):
class Solution {
public int countSegments(String s) {
if(s.equals("")|| s == null)
return 0;
char[] letters = s.toCharArray();
boolean preSpace = (letters[0]==' ')?true:false;
System.out.println(preSpace);
boolean haveLetters = false;
int count = 0;
for(int i=0;i<letters.length;i++){
if(letters[i] == ' '){
if(!preSpace){
count++;
preSpace = true;
}
}else{
haveLetters = true;
preSpace = false;
}
}
System.out.println(haveLetters);
if(haveLetters && letters[s.length() - 1] != ' ')
count++;
return count;
}
}