目录
- 力扣经典150题第十九题:最后一个单词的长度
- 1. 题目描述
- 2. 解题思路
- 3. 解题步骤
- 4. 代码实现
- 5. 时间复杂度分析
- 6. 应用和扩展
- 7. 总结
- 8. 参考资料
力扣经典150题第十九题:最后一个单词的长度
1. 题目描述
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大
子字符串
。
示例 1:
输入:s = “Hello World”
输出:5
解释:最后一个单词是“World”,长度为5。
示例 2:
输入:s = " fly me to the moon "
输出:4
解释:最后一个单词是“moon”,长度为4。
示例 3:
输入:s = “luffy is still joyboy”
输出:6
解释:最后一个单词是长度为6的“joyboy”。
提示:
1 <= s.length <= 104
s 仅有英文字母和空格 ’ ’ 组成
s 中至少存在一个单词
2. 解题思路
从字符串末尾开始向前遍历,找到最后一个单词的起始位置和结束位置,然后计算其长度。
3. 解题步骤
- 去除字符串末尾的空格,防止计算错误。
- 从字符串末尾开始向前遍历,直到找到第一个非空格字符,确定最后一个单词的结束位置。
- 继续向前遍历,直到找到第一个空格字符或到字符串的开头,确定最后一个单词的起始位置。
- 根据起始位置和结束位置计算最后一个单词的长度。
4. 代码实现
class Solution {
public int lengthOfLastWord(String s) {
// Trim trailing spaces
s = s.trim();
int length = 0;
int i = s.length() - 1;
// Find the end of the last word
while (i >= 0 && s.charAt(i) != ' ') {
length++;
i--;
}
return length;
}
}
5. 时间复杂度分析
- 该算法的时间复杂度为 O(n),其中 n 是字符串
s
的长度。需要一次字符串的遍历来计算最后一个单词的长度。
6. 应用和扩展
- 该算法可以用于计算字符串中最后一个单词的长度,通过从字符串末尾向前遍历来确定单词的起始和结束位置。
- 可以应用于处理字符串相关的问题,特别是处理单词和空格分隔的情况。
7. 总结
本文介绍了如何计算字符串中最后一个单词的长度,通过从字符串末尾向前遍历来确定单词的起始和结束位置,然后计算单词的长度。
8. 参考资料