https://leetcode-cn.com/problems/length-of-last-word/
给定一个仅包含大小写字母和空格 ' '
的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World" 输出: 5
解题关键:重点处理首段空格,尾段空格,单词中间多个空格的情况
int lengthOfLastWord(char* s) {
int count = 0 ,countpre = 0; //记录前一个单词字符数和当前单词字符数。
if(strlen(s)==0) return 0;
else{
while(*s == ' '){ //排除首段空格
s++;
}
while(*s){
if(*s!=' ' && s!='\0'){ //当不是空格计数器加1
count++;
s++; //if else语句内s++不能放在外面,否则可能引起下标越界
}
else if(*s==' '){
if(*(s-1)!=' '){ //排除中间多个空格的情况,只有前一个不是空格
countpre = count; //才是有效的单词分隔
count = 0;
}
s++;
}
}
} //若尾端有多个空格,count将置零
if(count != 0) return count; //若count不等于0说明尾端无多个空格
else return countpre; //保存最后处理的单词字符数,处理尾端多个仍有空格的情况
}