您的位置:首页 > 其它

LeetCode每日一题--最后一个单词的长度

2020-03-15 18:21 357 查看

  【前言】坚持日更LeetCode刷题系列

    不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!


  【题目】58.最后一个单词的长度

    题目描述:给定一个仅包含大小写字母和空格

' '
的字符串
s
,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。

    如果不存在最后一个单词,请返回 0 。

    

说明:
一个单词是指仅由字母组成、不包含任何空格字符的最大子字符串。


    示例:

示例 1:
输入: "Hello World"
输出: 5

    

思路一:
将字符串转化为列表,将尾部的空格去除后,依然从尾部开始遍历,如果遇到非空格则跳过,遇到空格则跳出,并记录下该空格的index,对其处理之后即可得到最后一个单词的长度。具体代码如下:

class Solution(object):
def lengthOfLastWord(self, s):
"""
:type s: str
:rtype: int
"""

list_s = list(s)
list_s2 = list_s[:]    #用于保存去除尾部空格后的列表
for i in range(len(list_s)-1,-1,-1):#去除尾部空格
if list_s[i] != ' ':
break
else:
list_s2.pop(i)
index = len(list_s2)+1  #将index这样定义可用于判断index是否发生变化
for i in range(len(list_s2)-1,-1,-1):
if list_s2[i] != ' ':  #如果不是空格则继续循环
continue
else:	    #遇到空格,则记录下index,并跳出循环
index = i
break
if index == len(list_s2)+1:  #如果index未发生变化
return len(list_s2)
else:          #index发生变化
return len(list_s2)-index-1

    运行结果:

    关于其中一些知识的链接:

    算法图解

    

思路二:
将字符串转化为列表,调用列表中的方法即可解决。例:通过count方法得到空格的个数,再通过index结合pop方法得到空格的索引值,最后一次index操作,即为最后一个空格所在的位置,之后易得最后一个单词的长度,不过此方法同样需要将右边的空格去除。
    如果不想去除右边空格的话,可以通过切片的方法,利用每两个空格间即为一个单词,得到最后一个不为0长度的列表即为解,注意为空的情况即可。


    

思路三:
调用字符串的方法即可解决。例:通过rstrip函数将右端的空格去除后,再利用split函数将其分割成多个单词,即可得解。


    分享就到这里了,欢迎大家一起交流讨论。


    

注明

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/length-of-last-word

  • 点赞 2
  • 收藏
  • 分享
  • 文章举报
Mingw_ 发布了36 篇原创文章 · 获赞 64 · 访问量 2780 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: