题目重现:day018
其实这道题挺简单的,我的思考历程先是准备慢慢遍历到最后一个。后面我觉得不如直接倒叙开始做,把空格的地方替换成0,然后倒着判断不是零的元素。
class Solution:
def lengthOfLastWord(self, s):
if not s: return 0
res = ''
for char in s.replace(' ', '0')[::-1]:
if char != '0':
res += char
elif res and char == '0':
break
return len(res)
这是我第一个版本的代码,当char不是零的时候开始记录,到再次为零的时候break跳出。战胜了95%用户,后面想了想其实不用先替换,直接用‘ ’判断。
def lengthOfLastWord(self, s):
if not s: return 0
res = ''
for char in s[::-1]:
if char != ' ':
res += char
elif res and char == ' ':
break
return len(res)
这次的代码只战胜了百分之65.
在评论区学习到了strip和split函数,s.strip(rm) 可以删除s字符串中开头、结尾处,位于 rm删除序列的字符,也可以空着用来删除空格。split()可以用来分隔字符串,可以通过()内的参数指定字符。
所以我交了第一个版本:
class Solution:
def lengthOfLastWord(self, s: str) -> int:
if not s:
return 0
wordlist = s.split()
# strip()可以删除开头和结尾的空格
# split()分割字符串
return len(wordlist[-1])
这样会在输入是‘ ’发生错误,此时的wordlist里面没有参数。这句如果改成wordlist = s.split(' ')
当输入为‘a ’,a之后有空格,那么wordlist[-1]是一个空字符串,长度为零。如果改成wordlist = s.strip().split()这样在输入为‘ ’空格时仍旧发生错误,此时的wordlist里面没有参数。最后改成了wordlist = s.strip().split(' ')结果正确。
wordlist = s.split(' ')时候wordlist里面是[' ',' ']两个
wordlist = s.strip.split(' ')时候wordlist里面是[' ']一个
打卡day018