58. 最后一个单词的长度

这个题目就像标题一样直接,第一步,找到最后一个单词,第二步,计算长度。

我就写了这样的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def lengthOfLastWord(self, s: str) -> int:
idx = len(s) - 1
flag = False
count = 0
while idx >= 0:
if s[idx] == " ":
if not flag:
idx -= 1
continue
else:
break

flag = True
count += 1
idx -= 1
return count

写完看了题解,发现我写得还是比较啰嗦的,多用了很多的变量。题解里有一些解法,上来先处理尾空格,然后再开一个循环开始计数,原理是一样的,但是写起来简洁了很多,我个人觉得很好。

另外有人提到,为啥不用 trim,是呀,题目也没说不可以用 trim,如果对类库很熟的话,完全可以用 trim,不能因为是算法题,就陷入思维定势吧…… 也是蠢得可爱……

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def lengthOfLastWord(self, s: str) -> int:
s = s.strip()
idx, count = len(s) - 1, 0
while idx >= 0:
if s[idx] != " ":
count += 1
else:
return count
idx -= 1
return 0

用 Python 的 strip() 函数,精简了一下,去掉尾空格后,数数,遇到空格停止。