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

  【前言】坚持日更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

发布了32 篇原创文章 · 获赞 62 · 访问量 1317

猜你喜欢

转载自blog.csdn.net/Mingw_/article/details/104726562