题目描述
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
请注意,你可以假定字符串里不包括任何不可打印的字符。
示例:
输入: “Hello, my name is John”
输出: 5
解释: 这里的单词是指连续的不是空格的字符,所以 “Hello,” 算作 1 个单词。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-segments-in-a-string
注:这里单词连续指的是,单词中不含有空格即算连续,"hello,“算是一个单词,但是”,hello"的话在我的代码也算是一个单词
虽然感觉听上去不是很合理,毕竟很简单的一个程序
1.通过isFirst判断是否是单词中第一个字符,首次是true,用完之后变成false,发现是空格,那么在true
2.如果不是空格,而且是第一个字符,那么count++
int countSegments(string s) {
bool isFirst = true;
int count = 0;
for(char c : s) {
if(c != 32) { //只要不是空格,就算是允许在单词中出现,那要么是第一个出现,要么是单词中的部分
if(isFirst) { //如果是第一个字符的话,那么count++,isFirst=false
count++;
isFirst = false;
}
} else { //否则,当前单词已经结束
isFirst = true;
}
}
return count;
}
int countSegments(string s) {
int count = 0;
for(int i = 0; i < s.size(); i++) {
//当前字符不等于空格且当前下标为0或前一个字符为空格
if(s[i] != 32 && (i == 0 || s[i - 1] == 32)) {
count++;
}
}
return count;
}
int main() {
int num = countSegments("0P");
cout << num << endl;
return 0;
}