给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = “Hello World”
输出:5
解释:最后一个单词是“World”,长度为5。
示例 2:
输入:s = " fly me to the moon "
输出:4
解释:最后一个单词是“moon”,长度为4。
示例 3:
输入:s = “luffy is still joyboy”
输出:6
解释:最后一个单词是长度为6的“joyboy”。
自己写的,反向遍历
class Solution:
def lengthOfLastWord(self, s: str) -> int:
res_l = []
res = ''
if s[len(s)-1] == ' ':
is_first = True
else:
is_first = False
for i in range(len(s)-1,-1,-1):
if s[i] == ' ' and is_first == True and res_l == []:
is_first = False
elif s[i] == ' ' and is_first == False and res_l != []:
break
elif s[i] != ' ':
res_l.append(s[i])
for i in range(len(res_l)-1,-1,-1):
res += res_l[i]
return len(res)

优化一下,删掉不必要的变量
class Solution:
def lengthOfLastWord(self, s: str) -> int:
res_l = []
for i in range(len(s)-1,-1,-1):
if s[i] == ' ' and res_l == []:
is_first = False
elif s[i] == ' ' and res_l != []:
break
elif s[i] != ' ':
res_l.append(s[i])
return len(res_l)

再优化一下
class Solution:
def lengthOfLastWord(self, s: str) -> int:
res = []
for i in range(len(s)-1, -1, -1):
if s[i] == ' ' and res != []:
break
elif s[i] != ' ':
res.append(s[i])
return len(res)
官方解,一行
class Solution:
def lengthOfLastWord(self, s: str) -> int:
return len(s.split()[-1]) # split()按空格分割,取最后一个长度
# return len(s.rstrip().split(" ")[-1]) # rstrip 删掉右边空格,没有这个也行
https://leetcode.cn/problems/length-of-last-word/solutions/19979/python-yi-xing-by-jimmy00745-2/