058 最后一个单词的长度
2025年5月22日大约 2 分钟
🚀 相关链接
📜 描述
给你一个字符串 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
- 解释: 最后一个单词是“joyboy”,长度为 6。
📝 提示
1 <= s.length <= 10^4
s
仅有英文字母和空格' '
组成s
中至少存在一个单词
💭 思路
从字符串的末尾开始遍历,找到最后一个单词的开头和结尾,计算其长度。
- 初始化一个标志位
flag
为false
,用于判断是否进入了最后一个单词。 - 从字符串的最后一个字符开始,向前遍历:
- 如果当前字符不是空格,且
flag
为false
,则进入最后一个单词,并设置flag
为true
,同时初始化长度为 1。 - 如果当前字符不是空格,且
flag
为true
,则长度加 1。 - 如果当前字符是空格,且
flag
为true
,则返回当前计算的长度。
- 如果当前字符不是空格,且
- 如果遍历结束后仍未返回,则返回当前计算的长度。
💻 代码实现
public int lengthOfLastWord(String s) {
int len = s.length();
boolean flag = false;
int res = 0;
for (int i = len - 1; i >= 0; i--) {
char c = s.charAt(i);
if (!flag && c != ' ') {
flag = true;
res = 1;
} else if (flag && c != ' ') {
res++;
} else if (flag) {
return res;
}
}
return res;
}