题目
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World"
输出: 5
易错点:
输入: "day "
输出: 3
代码(C语言)
过程比较乱,flag用来抵消内外两层循环导致的重复i++,避免在处理最后很多个空格后,最后一个结束符\0被跳过
#include<stdio.h>
#include<stdlib.h>
int lengthOfLastWord(char* s)
{
int i, j;
int flag = 0;
int sum = 0;
for (i = 0; s[i] != 0; i++)
{
flag = 0;
if (s[i] == ' ')//如果当前项是空格
{
for (j = 1; s[i + j] != 0; j++)//看后面的项
{
if (s[i + j] == 0)//如果后面的第i+j项是结束符
{
return sum;//返回sum
flag = 1;
}
else if (s[i + j] == ' ')//如果后面的第i+j项是空格,让i右移
{
i++;
}
else if (65 <= s[i + j] && s[i + j] <= 122)//如果后面的第i+j项是字母
{
sum = 0; //sum归零
break; //进入下一次循环
}
if (flag = 1)
{
i--;
}
}
}
else sum++;
}
return sum;
}
int main()
{
int length;
char s[] = "day ";
length = lengthOfLastWord(s);
printf("length=%d\n", length);
system("pause");
}