由后向前遍历
- 很多题往往会出现“最后”,“末尾”,等字样,这是如果我们还用传统方法由前向后遍历的话,往往会做很多无用功,这时我们采用由后向前遍历;
例题【最后一个单词的长度】
- 题目:
- 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
- 示例:
- 输入:s = “Hello World”
输出:5 - 输入:s = " fly me to the moon "
输出:4
思路
- 1>.初始化字符串末端位置,即end=s,length()-1;
- 2>.通过while循环定位end为最后一个字母的位置;
【若end<0则代表字符串中没有单词没有字母,直接返回0】
将end赋值给start,在通过while循环,定位最后一个单词的第一个字母的前一个位置;
【start==-1时,则代表单词前没有空格,不影响计算结果】 - 3>.返回end-start为最终结果
代码
class Solution {
public int lengthOfLastWord(String s) {
int end = s.length()-1;
while(end>=0 && s.charAt(end)==' '){
end--;
}
if(end < 0){
return 0;
}
int start = end;
while(start>=0 && s.charAt(start)!=' '){
start--;
}
return end-start;
}
}
声明
- 原作者:E.L.E
- <本文章著作权归作者所有,商业转载请获得作者授权,非商业转载请注明出处>
- <欢迎大家评论>