题目地址:最后一个单词的长度
class Solution {
public int lengthOfLastWord(String s) {
//end到达字符串末尾
int end = s.length() - 1;
//先将字符串最后一个单词后面的空格去掉
while(end >= 0 && s.charAt(end) == ' '){
end --;
}
//如果end小于0,说明全是空格,直接返回0
if(end < 0)
return 0;
//end不动,start从end位置开始往前遍历,直到遇到空格停止
int start = end;
while(start>=0 && s.charAt(start)!=' ')
start--;
//两者相减就是最后一个字符串的长度
return end-start;
}
}
结果:
再记录几个可以通过的程序:
class Solution {
public int lengthOfLastWord(String s) {
if (s==null)
return 0;
//count为最后一个单词的计数器
int count = 0;
for(int i = s.length()-1 ; i>=0 ; i--){
//从字符串最后一个字符开始扫描,遇到空格且当前计数器没开始计数则跳过
if(s.charAt(i) == ' '){
if(count == 0)
continue;
//若当前计数器不为0且遇到空格了则结束循环
break;
}
//最后一个单词字符个数加一
count++;
}
return count;
}
}
结果:
还有一种方法比较讨巧,运用内置的函数,不推荐,但也可以通过
class Solution {
public int lengthOfLastWord(String s) {
//去掉字符串首尾空格
s=s.trim();
//找到最后一个空格的下标加一,为最后一个单词起始位置
int start = s.lastIndexOf(" ")+1;
//对字符串进行分隔。求最后一个单词的长度
return s.substring(start).length();
}
}
结果: