题目描述
给定一个仅包含大小写字母和空格 ’ ‘ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。
样例
输入: "Hello World"
输出: 5
算法分析
- 1、从后往前找,找到第一个不是空字符串的位置
k
,若k == -1
,表示整个字符串都是空,返回0
- 2、从
k
位置开始往前找,直到找到字符串是空的位置idx
,因此最后一个单词的长度是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;
}
}