基本思路:遍历字符串,用start指针指向单词开头,end指针指向单词结尾,如果有单词,end-start+1即为最后一个单词的长度。

代码如下:

//
// Created by jt on 2020/9/29.
//
class Solution {
public:
    int lengthOfLastWord(const char *s) {
        if (!s) return 0;
        // 找到最后一个空格
        const char *p = s, *start = nullptr, *end = nullptr;
        while (*p) {
            // 如果当前位置非空格且当前位置为起始位置,或当前位置非空格且前面位置为空格,保存单词的头指针
            if ((*p != ' ' && p == s ) || (*p != ' ' && *(p-1) == ' ')) start = p;
            // 如果当前位置非空格,后面位置为结尾或空格,保存单词的尾指针
            if (*p != ' ' && (*(p+1) == '\0' || *(p+1) == ' ')) end = p;
            ++p;
        }
        if (start == nullptr || end == nullptr) return 0;
        else return end - start + 1;
    }
};