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

Laraine ·
更新时间:2024-09-21
· 990 次阅读

  【前言】坚持日更LeeCode刷题系列
    不积跬步,无以至千里;不积小流,无以成江海。愿与诸君共勉!

  【题目】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


作者:Mingw_



leecode 长度 单词

需要 登录 后方可回复, 如果你还没有账号请 注册新账号