题目
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
.
解析
只需要用一个i从后往前找,跳过空格,找到字符,然后遇到空格停止即可,需要注意边界条件。题目很简单,代码如下
class Solution {
public:
int lengthOfLastWord(string s) {
int i = s.size()-1;
int ret = 0;
while ( i>=0 && s[i] == ' ')
i--;
while (i>=0 && s[i]!=' ')
{
i--;
ret++;
}
return ret;
}
};
看看大神代码
public:
int lengthOfLastWord(const char *s) {
const string str(s);
auto first = find_if(str.rbegin(), str.rend(), ::isalpha);
auto last = find_if_not(first, str.rend(), ::isalpha);
return distance(first, last);
}
};
和
class Solution {
public:
int lengthOfLastWord(const char *s) {
int len = 0;
while (*s) {
if (*s++ != ' ')
++len;
else if (*s && *s != ' ')
len = 0;
}
return len;
}
};