倒序遍历
最后一个单词前面可能有若干单词,后面也可能有空格,因此直接从前往后找不如从后往前找更直接。
先从字符串末尾开始跳过所有空格,找到最后一个单词的结尾位置;再继续向左遍历,直到遇到空格或到达字符串开头,此时这段区间的长度就是最后一个单词的长度。
时间复杂度 $O(n)$
空间复杂度 $O(1)$
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Solution { public int lengthOfLastWord(String s) { int i = s.length() - 1; while (s.charAt(i) == ' ') { i--; } int last = i; while (i >= 0 && s.charAt(i) != ' ') { i--; } return last - i; } }
|