需求分析
现在有一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 (单词是指仅由字母组成、不包含任何空格字符的最大子字符串)
java代码
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;
}
代码分析
1.它定义了一个变量 end,用来表示字符串 s 中最后一个非空格字符的位置。它通过循环遍历字符串 s,从后往前找到第一个非空格字符的位置,然后将其赋值给变量 end。在找到第一个非空格字符之前,它会一直往前移动,直到字符串 s 中没有字符或者只有空格字符为止。
2.如果变量 end 小于 0,说明字符串 s 中没有非空格字符,直接返回 0。否则,它定义了另一个变量 start,用来表示字符串 s 中最后一个单词的起始位置。它通过循环遍历字符串 s,从变量 end 开始往前找到第一个空格字符的位置,然后将其赋值给变量 start。在找到第一个空格字符之前,它会一直往前移动,直到字符串 s 中没有字符或者只有非空格字符为止。
3.它返回变量 end 和 start 的差值,即字符串 s 中最后一个单词的长度。注意,如果字符串 s 中最后一个单词后面有空格字符,这些空格字符不会被计算在内。