一、需求
- 给你一个字符串
s
,由若干单词组成,单词之间用空格隔开。 - 返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
- 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = "Hello World" 输出:5
示例 2:
输入:s = " " 输出:0
提示:
1 <= s.length <= 104
s
仅有英文字母和空格' '
组成
二、字符串遍历
2.1 思路分析
- 若单词后面全为空格,此时也需要返回单词的长度,因此我们首先去掉首尾空格;
- 从右向左遍历字符串,有两种情况:①遍历过程中遇到空格;②遍历过程中没有遇到空格;
2.2 代码实现
class Solution {
public int lengthOfLastWord(String s) {
//即便单词后有空格,也会构成单词,因此首先去掉首尾空格
s = s.trim();
int n = s.length();
int i = 0;
//从右向左遍历,单词中间有空格的情况
for(i = n - 1; i >= 0; i--) {
if(s.charAt(i) == ' ') {
return n - i - 1;
}
}
//从右向左遍历,单词中间无空格的情况
if(i == -1) {
return n;
}
//其余情况返回0
return 0;
}
}
2.3 复杂度分析
- 时间复杂度为O(N);
- 空间复杂度为O(1);