LeetCode 58 最后一个单词的长度
https://leetcode-cn.com/problems/length-of-last-word
简单题,使用指针i
从字符串最后一个字符往前面检查,一旦遇到一个字母,则用end
将其标记为最后一个单词的结尾。在end
已经有值的情况下,如果遇到了一个非字母,则表明算法已经遍历完了最后一个单词,将i+1
的值赋值给begin
标记为最后一个单词的开头。返回end - begin + 1
表示最后一个单词的长度。注意两个特殊情况:
(1)一个是end == -1
,这表明不存在最后一个单词
(2)另一个是end != -1
,但是begin == -1
这表明字符串中有且仅有一个单词,且该单词前面不含非字母字符。
class Solution {
public:
int lengthOfLastWord(string s) {
int sz = s.size();
int begin = -1, end = -1;
for (int i = sz - 1; i >= 0; --i) {
if (('a' <= s[i] && s[i] <= 'z') || ('A' <= s[i] && s[i] <= 'Z')) {
if (end == -1) end = i;
}
else {
if (end != -1) { begin = i + 1; break; }
}
}
if (end != -1)
return begin == -1 ? end + 1 : end - begin + 1;
return 0;
}
};