• 【LeetCode】58. 最后一个单词的长度


    1 问题

    给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

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

    示例 1:

    输入:s = “Hello World”
    输出:5
    解释:最后一个单词是“World”,长度为5。

    示例 2:

    输入:s = " fly me to the moon "
    输出:4
    解释:最后一个单词是“moon”,长度为4。

    示例 3:

    输入:s = “luffy is still joyboy”
    输出:6
    解释:最后一个单词是长度为6的“joyboy”。

    2 答案

    自己写的,反向遍历

    class Solution:
        def lengthOfLastWord(self, s: str) -> int:
            res_l = []
            res = ''
            if s[len(s)-1] == ' ':
                is_first = True
            else:
                is_first = False
            for i in range(len(s)-1,-1,-1):
                if s[i] == ' ' and is_first == True and res_l == []:
                    is_first = False
                elif s[i] == ' ' and is_first == False and res_l != []:
                    break
                elif s[i] != ' ':
                    res_l.append(s[i])
            for i in range(len(res_l)-1,-1,-1):
                res += res_l[i]
            return len(res)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    优化一下,删掉不必要的变量

    class Solution:
        def lengthOfLastWord(self, s: str) -> int:
            res_l = []
            for i in range(len(s)-1,-1,-1):
                if s[i] == ' ' and res_l == []:
                    is_first = False
                elif s[i] == ' ' and res_l != []:
                    break
                elif s[i] != ' ':
                    res_l.append(s[i])
            return len(res_l)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    再优化一下

    class Solution:
        def lengthOfLastWord(self, s: str) -> int:
            res = []
            for i in range(len(s)-1, -1, -1):
                if s[i] == ' ' and res != []:
                    break
                elif s[i] != ' ':
                    res.append(s[i])
            return len(res)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    官方解,一行

    class Solution:
        def lengthOfLastWord(self, s: str) -> int:
            return len(s.split()[-1])  # split()按空格分割,取最后一个长度
            # return len(s.rstrip().split(" ")[-1])  # rstrip 删掉右边空格,没有这个也行
    
    • 1
    • 2
    • 3
    • 4

    https://leetcode.cn/problems/length-of-last-word/solutions/19979/python-yi-xing-by-jimmy00745-2/

  • 相关阅读:
    三道MySQL联合索引面试题,淘汰80%的面试者,你能答对几道
    DevOps简介
    UE5第一人称射击游戏蓝图教程
    flutter系列之:在flutter中使用导航Navigator
    后端接口性能优化分析-问题发现&问题定义
    Win10 + VS017 编译SQLite3.12.2源码
    【TS】枚举
    新能源汽车软件开发设计规范
    为了面试大厂,熬夜肝完这份 “测试” 笔记后,我终于“硬”了一回
    Flink_CDC搭建及简单使用
  • 原文地址:https://blog.csdn.net/CSDNLHCC/article/details/133951896