Leetcode 58. 最后一个单词的长度

163 阅读1分钟

Leetcode 58. 最后一个单词的长度

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

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”。

限制

  • 1 <= s.length <= 104
  • s 仅有英文字母和空格 ' ' 组成
  • s 中至少存在一个单词

2、思路🧠

从字符串末尾开始向前遍历,其中主要有两种情况

  1. 从后向前遍历直到遍历到头或者遇到空格为止
  2. 需要先将末尾的空格过滤掉,再进行第一种情况的操作

完整过程应该是从后过滤掉空格之后找到单词尾部,从此刻就开始进行统计,统计到再次出现空格的位置,停止统计,此时的长度就是该单词的长度。

废话少说~~~~~上代码!

3、代码👨‍💻

第一次commit AC

class Solution {
    public int lengthOfLastWord(String s) {
        int l = s.length();
        int count = 0;
        for(int i = l - 1; i >= 0;i--){
            if(s.charAt(i) != ' '){
                count++;
            }else if(count != 0){
                return count;
            }
        }
        return count;
    }
}

时间复杂度:O(N) 其中 N 是字符串 s 的长度。

空间复杂度:O(1)

image-20220316201807804

4、总结

该题目的对字符串的单词统计有了解,并且熟悉统计的流程。

❤️‍来自专栏《LeetCode基础算法题》欢迎订阅❤️‍

厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。

对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!

原题链接:58. 最后一个单词的长度 - 力扣(LeetCode)