题目取自LeetCode
题目描述
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: “Hello World”
输出: 5
解决代码:
class Solution {
public int lengthOfLastWord(String s) {
if(s.lastIndexOf(' ')==-1) return s.length();//如果没出现过空格,则返回字符串长度
int count=0;//最后一个单词长度的计数器
char[] chr=s.toCharArray();
for(int i=chr.length-1;i>=0;i--){
//字符串可能是以空格结束,我们先要跳过这些空格,因此采用if判断
if(chr[i]!=' '){
//跳过末尾的空格之后,开始计数
count++;
//如果没有到字符串最开始,并且该字符之前是空格,则返回此长度。
//此处有个坑,如果我们不判断i是不是已经到字符串的最开始
//但我们遇到只有一个单词且开头没有空格的情况,char[i-1]会数组越界
if(i!=0&&chr[i-1]==' ') return count;
}
}
return count;
}
}
最后运行效果还不错
执行用时 : 1 ms, 在Length of Last Word的Java提交中击败了98.17% 的用户
内存消耗 : 34.4 MB, 在Length of Last Word的Java提交中击败了92.77% 的用户