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
.
问题的思路就是从后向前找,从尾部第一个不是空格的位置向前找,在找到下一个空格之前 ,若其间的部分都是字符,则返回其长度。
class Solution {
public:
bool isChar(char c)
{
return (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z');
}
//notice: leading space & posting space.
int lengthOfLastWord(const char *s) {
int str_len = strlen(s);
if(str_len == 0) return 0;
int word_end = str_len - 1;
//skip the posting space.
while(word_end >= 0 && *(s + word_end) == ' ') --word_end;
if(word_end < 0) return 0;
int i = 0;//i is the lenght of the last word.
while(word_end - i >= 0 && isChar(*(s + word_end - i))) ++i;
return i;
}
};