LeetCode 58. 最后一个单词的长度
天津科技大学第六届科技文化节算法设计大赛第2题
难度:简单
题目:
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
示例 1:
输入:s = “Hello World” 输出:5
示例 2:
输入:s = " fly me to the moon " 输出:4
示例 3:
输入:s = “luffy is still joyboy” 输出:6
提示:
1 <= s.length <= 104
s 仅有英文字母和空格 ’ ’ 组成
s 中至少存在一个单词
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
**
解题思路:
-
解法一:
本题可以使用蛮力法,将字符串从尾向前遍历,此时解决过程课分为两阶段:其一,末尾为空格,我们可以通过循语句,当前字符为空格时删除该字符,为字母时停止循环。第二阶段,继续遍历字符串,遇到字母即记录,遇到空格时停止循环,将所记录的数组倒序输出即为最后一个单词,长度也就呼之欲出了。 -
解法二:
我们可以先用字符串中的split(" ")方法将字符串进行切片,以空格为切割依据将字符串切割成只剩下单词的数组,数组的最后一个元素的长度即为答案
源代码
def lengthOfLastWord(self, s: str) -> int: #方法1
s=list(s)
s.reverse()
print(s)
for i in range(0,len(s)):
if s[i]==' ':
i=i+1
else:
break
num=0
for j in range(i,len(s)):
if s[j]!=' ':
num=num+1
else:
break
return num
def lengthOfLastWord(s): #方法2
space=''
s=s.split(" ")
while(space in s):
s.remove(space)
last=len(s[len(s)-1])
return last
运行结果
方法1:
方法2:
执行用时仿佛不太对劲的样子
最开始方法2只需要8ms