大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
字符串处理,寻找最后一个单词的长度。
题目解答方法的文字分析
题目要求我们计算给定字符串 s 中最后一个单词的长度。为了解决这个问题,我们可以采用以下思路:
思路:
- 首先,我们需要找到字符串 s 中最后一个非空格字符的位置,我们可以从字符串末尾向前遍历,找到第一个非空格字符的位置,记为 end。
- 然后,我们从 end 开始继续向前遍历,直到遇到下一个空格字符或到达字符串的开头,这样可以确定最后一个单词的起始位置,记为 start。
- 最后,最后一个单词的长度就等于 end - start。
需要注意的是,如果字符串 s 中没有单词,即 s 为空字符串或只包含空格字符,那么最后一个单词的长度为 0。
举个例子:假设 s = "Hello World"。
- 从末尾开始遍历,找到第一个非空格字符 "d",记为 end。
- 从 "d" 开始继续向前遍历,直到遇到空格字符 " ",最后一个单词的起始位置为 "W" 的位置,记为 start。
- 最后一个单词的长度为 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!