LeetCode58 最后一个单词的长度
题目描述
给定一个仅包含大小写字母和空格 ' '
的字符串 s
,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
样例
输入: "Hello World"
输出: 5
算法分析
- 后往前找,找到第一个不是空字符串的位置k,若k == -1,表示整个字符串都是空,返回0
- 在从k往前找,找到为' '为止
- 返回 k - idx;
时间复杂度
\(O(n)\)
Java代码
class Solution {
public int lengthOfLastWord(String s) {
int k = s.length() - 1;
while(k >= 0 && s.charAt(k) == ' ') k--;
if(k == -1) return 0;
int idx = k;
while( idx >= 0 && s.charAt(idx) !=' ') idx--;
return k - idx;
}
}