思路分析
-
初始化变量:
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 {
// 如果当前字符是空格,检查当前单词的长度是否为 0
if (num != 0) {
// 如果当前单词的长度不为 0,更新上一个单词的长度
before = num;
// 将当前单词的长度重置为 0
num = 0;
}
// 如果当前单词的长度为 0,不更新上一个单词的长度
}
}
// 返回最后一个单词的长度
// 如果最后一个字符是空格,返回上一个单词的长度
// 如果最后一个字符不是空格,返回当前单词的长度
return num == 0 ? before : num;
}
};