我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/length-of-last-word/description/
题目描述:
知识点:字符串
思路:从后往前遍历
本题的思路很简单,但重要的是特殊情况的处理和判断。
(1)首先,如果字符串s的长度为0,即不存在最后一个单词,我们直接返回0。
(2)字符串的最后一个字符不一定是大小写字母,有可能是空格,比如"a "的情况,这时候我们需要一重循环来判断其最后一个字符是否是空值,将指针定位到从后往前数,第一个不为空格的字符上。在这个过程中,一旦指针小于0,说明整个字符串都由空格组成,即不存在最后一个单词,我们直接返回0。
(3)找到了起始位置start之后,从后往前寻找下一个空格字符的索引,一旦找到直接break跳出循环。结果就是start - i,其中i为下一个空格字符的索引。
时间复杂度最差情况是O(n)级别的,其中n为字符串s的长度。空间复杂度是O(1)。
JAVA代码:
public class Solution {
public int lengthOfLastWord(String s) {
int n = s.length();
if(n == 0) {
return 0;
}
int i = n - 1;
while(s.charAt(i) == ' ') {
i--;
if(i < 0) {
return 0;
}
}
int start = i;
for (; i >= 0; i--) {
if(s.charAt(i) == ' ') {
break;
}
}
return start - i;
}
}
LeetCode解题报告: