大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

字符串处理,寻找最后一个单词的长度。

题目解答方法的文字分析

题目要求我们计算给定字符串 s 中最后一个单词的长度。为了解决这个问题,我们可以采用以下思路:

思路:

  1. 首先,我们需要找到字符串 s 中最后一个非空格字符的位置,我们可以从字符串末尾向前遍历,找到第一个非空格字符的位置,记为 end。
  2. 然后,我们从 end 开始继续向前遍历,直到遇到下一个空格字符或到达字符串的开头,这样可以确定最后一个单词的起始位置,记为 start。
  3. 最后,最后一个单词的长度就等于 end - start。

需要注意的是,如果字符串 s 中没有单词,即 s 为空字符串或只包含空格字符,那么最后一个单词的长度为 0。

举个例子:假设 s = "Hello World"。

  1. 从末尾开始遍历,找到第一个非空格字符 "d",记为 end。
  2. 从 "d" 开始继续向前遍历,直到遇到空格字符 " ",最后一个单词的起始位置为 "W" 的位置,记为 start。
  3. 最后一个单词的长度为 end - start = 5 - 1 = 4。

本题解析所用的编程语言

C++

完整且正确的编程代码

class Solution {
public:
    int lengthOfLastWord(string s) {
        int end = s.size() - 1;
        // 找到最后一个非空格字符的位置
        while (end >= 0 && s[end] == ' ') {
            end--;
        }
        // 没有单词,直接返回0
        if (end < 0) {
            return 0;
        }
        // 找到最后一个单词的起始位置
        int start = end;
        while (start >= 0 && s[start] != ' ') {
            start--;
        }
        // 最后一个单词的长度为 end - start
        return end - start;
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!