思路分析
-
初始化变量:
num
用于记录当前单词的长度。before
用于记录上一个单词的长度。
-
遍历字符串:
- 如果字符不是空格,增加
num
计数。 - 如果字符是空格,检查
num
是否为 0:- 如果
num
为 0,说明之前没有记录到单词,所以before
保持不变。 - 如果
num
不为 0,更新before
为num
,并将num
置为 0。
- 如果
- 如果字符不是空格,增加
-
返回结果:
- 在遍历结束后,检查
num
是否为 0:- 如果
num
为 0,说明最后一个字符是空格,返回before
(上一个单词的长度)。 - 如果
num
不为 0,返回num
(最后一个单词的长度)。
- 如果
- 在遍历结束后,检查
class Solution {
public:int lengthOfLastWord(string s) {// 用于记录当前单词的长度int num = 0;// 用于记录上一个单词的长度int before = 0;// 遍历整个字符串for (int i = 0; i < s.size(); i++) {// 如果当前字符不是空格,增加当前单词的长度if (s[i] != ' ') {num++;} else {// 如果当前字符是空格,检查当前单词的长度是否为 0if (num != 0) {// 如果当前单词的长度不为 0,更新上一个单词的长度before = num;// 将当前单词的长度重置为 0num = 0;}// 如果当前单词的长度为 0,不更新上一个单词的长度}}// 返回最后一个单词的长度// 如果最后一个字符是空格,返回上一个单词的长度// 如果最后一个字符不是空格,返回当前单词的长度return num == 0 ? before : num;}
};