描述
给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
Tag
string
思路
- 从后往前遍历字符串,过滤空格。然后再从后向前遍历直到为空或遇到空格为止。
- 所以完整过程为先从后过滤掉空格找到单词尾部,再从尾部向前遍历,找到单词头部,最后两者相减,即为单词的长度
- 时间复杂度:O(n),n为结尾空格和结尾单词总体长度
代码
方法一
class Solution {
public int lengthOfLastWord(String s) {
int end = s.length()-1;
while(end >= 0 && s.charAt(end) ==' '){
end--;
}
if(end < 0){
return 0;
}
int start = end;
while(start >= 0 && s.charAt(start) != ' '){
start--;
}
return end - start;
}
}
方法二
神仙代码
- 去掉空格
- 定位字符串中最后一个空格的的位置
class Solution {
public int lengthOfLastWord(String s) {
if(s == null || s.length() == 0)
{
return 0;
}
return s.trim().length() - 1 - s.trim().lastIndexOf(" ");
}
}