【每日算法】最后一个单词的长度 LeetCode
代码
public int LengthOfLastWord(string s){int count = 0;for (int i = s.Length - 1; i >= 0; i--){if (s[i] == ' '){if (count == 0){continue;}else{break;}}count++;}return count;}
- 从后往前遍历:从字符串的最后一个字符开始,向前遍历。
- 跳过末尾的空格:如果当前字符是空格且尚未统计到任何字母(
count == 0
),则跳过。 - 统计字母:如果当前字符不是空格,则增加计数器
count
。 - 遇到空格且已统计字母:如果当前字符是空格且已经统计到字母(
count > 0
),则停止遍历,因为已经找到最后一个单词的末尾。 - 返回结果:最终返回
count
,即最后一个单词的长度。
优点
- 高效:时间复杂度为 O(n),只需一次遍历。
- 节省空间:空间复杂度为 O(1),仅使用常数级别的额外变量。
- 逻辑清晰:直接解决问题,无需额外操作(如分割字符串)。
示例
对于输入 " fly me to the moon "
:
- 从末尾开始遍历,跳过空格,直到遇到
'n'
。 - 统计
'n'
,'o'
,'o'
,'m'
,计数器count
增加到 4。 - 遇到空格时,
count
已经为 4,停止遍历,返回 4。