最后一个单词的长度 No.58
题目描述:
第一想法:
倒序遍历+字母前面有space来确立为终止条件:
原本以为只需要倒序判断找到space的位置就行了,败给了空串‘’、 space串‘ ’和‘A ’
class Solution:
def lengthOfLastWord(self, s: str) -> int:
count=0
if len(s) == 0:#判断空串-----------------------------Omission_1
return 0
elif len(s)==1 and s[0] != ' ':#只有一个单词
return 1
else:
for index in range(len(s)-1,-1,-1):
if s[index] == ' ':#此处依据为字母前面的空格来进行索引定位---导致len(‘A ’)=2寻找错误-----Omission_4---------未解决
if len(s)-index-1 <= 0:#空格后面的字符串大小是否为0------------------Omission_2
count+=1
if count == len(s):#全为空格串------------------Omission_3
return 0
else :
continue
else:
return len(s)-index-1-count
#放弃挣扎,看答案
New skill :
三种逆序:
- 切片
for i in a[::-1] :#逆序遍历 【start:end:step】
use i #元素
- range()函数:
for i in range(len(a)-1,-1,-1):# range() 函数:range(start, stop, step) (stop,start】
use a[i]
- reversed()函数 or a.reverse()再进行遍历 (a为list类型)
for i in reversed(a):
use i
# 使用列表的reverse方法
l = list(s)
l.reverse()
Solution_online(网上解法):第三种方法表现最优
- 逆序剔除空格再判断字母数
- 逆序剔除空格至字母,再定位此处,逆序寻找空格(终止条件)并计数
- map和split(使用库函数)
class Solution:
def lengthOfLastWord(self, s):#使用两个while
"""
:type s: str
:rtype: int
"""
cnt, tail = 0, len(s) - 1
while tail >= 0 and s[tail] == ' ':
tail -= 1
while tail >= 0 and s[tail] != ' ':
cnt += 1
tail -= 1
return cnt
from users : gaussic
-------------------------------------------------------------------
class Solution:
def lengthOfLastWord(self, s: str) -> int:
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
-------------------------------------------------------------------
class Solution:
def lengthOfLastWord(self, s: str) -> int:
if not s: return 0
arr = list(map(str, s.strip().split(' ')))
return len(arr[-1])
重写:
中午休息重写,困扰一上午的出错点在于死抓字母前的Space,换个思路,围绕
!Space即字母进行解决——成功了
class Solution:
def lengthOfLastWord(self, s: str) -> int:
if len(s)==0:#处理空串
return 0
elif len(s)==1:#处理单字符
if s[0] == ' ':
return 0
else:
return 1
else: #处理长度至少为二的字符串
r=s[::-1]#倒序一下
r=r+' '
count=0
for x in range(len(r)) :
#'A ' ' '
if r[x] !=' ':
count+=1
if x==len(r) or r[x+1] == ' ':
return count
if count == 0 :#解决space串
return 0
我是基础非常差的up主,时间不多,思想简单,个人随笔,勿喷