算法练习——最后一个单词的长度

2021年1月29日算法练习为58. 最后一个单词的长度,这道题求解一个字符串的最后一个词的长度,那么遍历一次数组,当发现是空格的时候记录这个单词的长度,只有在长度不为0的情况才需要记录,避免连续空格的情况将长度置0了,最后将长度归零。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public int lengthOfLastWord(String s) {
int length = 0, lastLength = 0;
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] != ' ') {
length++;
} else {
if (length != 0) {
lastLength = length;
}
length = 0;
}
}
return length == 0 ? lastLength : length;
}
}

但是回过头来一想,好像不需要全部扫描,只需要将最后一个词扫中就完成,因此我们从右边向左开始找非空格的下标,找到后再从这个下标开始向左找空格,这样就能够将长度给计算出来了。代码如下:

1
2
3
4
5
6
7
8
9
10
class Solution {
public int lengthOfLastWord(String s) {
char[] arr = s.toCharArray();
int r = arr.length - 1;
while (r >= 0 && arr[r] == ' ') r--;
int l = r;
while (l >= 0 && arr[l] != ' ') l--;
return r - l;
}
}