题目要求是返回最后一个单词的长度,那么这里这里可以直接从输入字符串的最后一个下标开始遍历。定义一个int变量记录最后一个单词的长度用来返回结果,因为字符串可能是以空格结尾的,所以遍历时只有遇到不是空格的字符时才开始计数。判断字符串中的字符是否是空格可以用Character类提供的静态方法isWhitespace(char c)来判断,当字符是空格时会返回true。当开始计数之后,如果当前遍历到的字符的下一个为空格时应该break退出循环,说明已经遍历完最后一个单词了。另外应当注意,如果输入的字符串中只有一个单词并且单词的开头第一个字符前面没有空格,这时再去判断当前字符前面的字符是否是空格会造成下标越界。因此,当当前字符串下标已经到达0时应当break循环。
public class CountWord {
public static void main(String[] args) {
System.out.println(lengthOfLastWord("aa ss girlfridend"));
}
public static int lengthOfLastWord(String s) {
int result = 0; //记录最后一个单词的长度
//从字符串最后下标开始遍历
for (int i = s.length() - 1; i > -1; i--) {
boolean isWhitespace = Character.isWhitespace(s.charAt(i));
if (!isWhitespace) {
result++;
//当i等于0的时候就不需要判断前面是否有空格了,此时应当break循环否则会出现下标越界
//当当前字符前一个字符为空格时也应该break
if (i == 0 || Character.isWhitespace(s.charAt(i - 1)))
break;
}
}
return result;
}
}