[LeetCode]58. 最后一个单词的长度(java实现)双指针
1. 题目
2. 读题(需要重点注意的东西)
思路(双指针):
当遍历到非空格的字符时,将start指向它,然后end从start处开始遍历,直到找到第一个空格或者达到边界为止。
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public int lengthOfLastWord(String s) {
int start = 0,end = 0;
for(int i = 0;i < s.length();i++){
// 遍历到开头
if(s.charAt(i) != ' '){
start = i;
end = start;
// 遍历结尾
while(end < s.length() && s.charAt(end) != ' ') end++;
i = end;
}
}
return end - start;
}
}
优化: 因为是求最后一个单词的长度,因此倒着遍历的第一个单词即是,节省遍历时间
class Solution {
public int lengthOfLastWord(String s) {
for(int i = s.length() - 1;i >= 0;i--){
// 遍历到结尾第一个字符
if(s.charAt(i) != ' '){
int j = i - 1;
// 遍历结尾
while(j >= 0 && s.charAt(j) != ' ') j--;
return i - j;
}
}
return 0;
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 双指针算法