leetcode 58. 最后一个单词的长度 (python)
程序员文章站
2024-03-14 21:38:23
...
题解:
本题用逆向遍历进行求解:
看到本题想到两种情况;
- 最后一个是单词
- 最后一个是空格
对于第一种情况,直接计算最后一个单词长度,然后返回即可;
但是这种情况也分为两种小情况,- 最后一个单词前面还有单词,因此判断最后一个单词是否结束的条件是当前指针指向的元素是空格;
- 最后一个单词前面没有单词,因此结束条件是当前指针指向的位置为-1;
对于第二种情况,需要先滤除空格,然后进行计算;但是如果字符串全部为空格,滤除所有空格后,当前指针指向的位置为-1,直接返回0即可。
代码如下:
class Solution:
def lengthOfLastWord(self, s):
right = len(s) - 1
while right >= 0:
if s[right] != ' ':
if right == 0:
return 1
count = 0
while s[right] != ' ' and right >= 0:
right -= 1
count += 1
return count
else:
while s[right] == ' ' and right >= 0:
right -= 1
if right == -1:
return 0
return 0
结果截图:
把
if right == 0:
return 1
归纳进入第一个for循环中
class Solution:
def lengthOfLastWord(self, s):
# if len(s) == 1 and s[0] != ' ':
# return 1
# elif len(s) == 1 and s[0] == ' ':
# return 0
right = len(s) - 1
while right >= 0:
if s[right] != ' ':
count = 0
while s[right] != ' ' and right >= 0:
right -= 1
count += 1
return count
else:
while s[right] == ' ' and right >= 0:
right -= 1
if right == -1:
return 0
return 0
先滤除空格,然后再进行单词的计算
class Solution:
def lengthOfLastWord(self, s):
end = len(s) - 1
while (end >= 0 and s[end] == ' '):
end -= 1
if end == -1:
return 0
start = end
while start >= 0 and s[start] != ' ':
start -= 1
return end - start