Length of Last Word
Given a string s consists of upper/lower-case alphabets and empty space characters ' '
, return the length of last word in the string.
If the last word does not exist, return 0.
Note: A word is defined as a character sequence consists of non-space characters only.
For example,
Given s = "Hello World"
,
return 5
.
如果最后一个单词不存在,返回 0.
说明:word 定义为不包含空格的字符序列。
例如,
给定字符串 s = "Hello World"
,返回 5.
分析:
先从字符串开始扫面,若为空格先保存紧挨当前空格前的 word 长度(因为可能后面的字符全是空格),再将 word 长度计数器清 0,用于下一次计数;若不为空格,将 word 长度计数器加 1。如果最后一个非空字符为空格(以空格结尾),需要返回上次记录的 word 长度,否则(以 word 结尾)就是当前 word 的长度。
int lengthOfLastWord(char* s) {
char *ps = s;
int ilastWordSize = 0, iwordSize = 0;
if(!s || !*s)/*空指针或者空串*/
return 0;
while(*ps)
{
if(*ps == ' ')
{
if(iwordSize) /*如果空格前出现过word,记录到当前为止最后出现的*/
{
ilastWordSize = iwordSize;
}
iwordSize = 0;
}
else
{
++iwordSize;
}
if(*ps == ' ' && !*(ps+1)) /*以空格结束,返回最后出现的word*/
{
iwordSize = ilastWordSize;
break;
}
++ps;
}
return iwordSize;
}