LeetCode 58 最后一个单词的长度

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;
    }
};
原文地址:https://www.cnblogs.com/wallace-lai/p/13985755.html