给你一个字符串 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
中至少存在一个单词
思路:从前往后遍历,遇到不为空的字符就while循环,长度count加一;直到字符为空,然后判断当前字符为空时,后面是否还有不为空的字符,如果有,说明上一步计算的count不是最后单词长度,重置为0,再for循环重新计算。
注意,for,while,if三个地方都加了i的值判断,时刻注意数组越界
class Solution {
public int lengthOfLastWord(String s) {
int n = s.length();
int count = 0;
for (int i = 0; i < n; i++) {
while (i < n && s.charAt(i) != ' ') {
count++;
i++;
}
if (i < n - 1 && s.charAt(i) == ' ' && s.charAt(i + 1) != ' ') {
count = 0;
}
}
return count;
}
}
法二:从后往前遍历,效率更高
class Solution {
public int lengthOfLastWord(String s) {
int index = s.length() - 1;
while (s.charAt(index) == ' ') {
index--;
}
int wordLength = 0;
while (index >= 0 && s.charAt(index) != ' ') {
wordLength++;
index--;
}
return wordLength;
}
}
作者:力扣官方题解
链接:https://leetcode.cn/problems/length-of-last-word/solutions/1008504/zui-hou-yi-ge-dan-ci-de-chang-du-by-leet-51ih/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。