题目
给定一个字符串, 包含大小写字母、空格' ',请返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
分析
先不考虑特殊值,从后往前找,首先跳过尾部所有的空格字符,找到字符串中最后一位字母,记下坐标last,接着从last往前找空格,只要找到了空格i,那么last - i就是最后一个单词的长度。
也可能找不到空格,说明这个单词是从头到last都是字母,那么单词的长度就应该是last + 1。
然后再考虑蛋疼的null,以及单词数小于1的情况。
代码
public class Solution {
/**
* @param s: A string
* @return: the length of last word
*/
public int lengthOfLastWord(String s) {
// write your code here
if (s == null || s.length() < 1) return 0;
int last = s.length() - 1;
while(last >= 0 && s.charAt(last) == ' ') {
last--;
}
for(int i=last-1; i >= 0; i--) {
if(s.charAt(i) == ' ') {
return last - i;
}
}
return last + 1;
}
}