LinQinの博客空间
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

LeetCode 面试经典150题

写作时间:2026-09-17 11:26:14

58. 最后一个单词的长度

给你一个字符串 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 中至少存在一个单词

‍


题解:

我自己的解法:

class Solution {
    public int lengthOfLastWord(String s) {
        int endlength = 0;// 最后一个单词的长度
        int nowlength = 0;// 现在遍历的单词的长度
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != ' ') { // 如果当前字母不为空则更新当前单词长度
                nowlength++;
                endlength = nowlength;//将当前单词长度赋值给endlength,就算后续全是空格,endlength长度也不会变了
            }else{//如果为空则重置当前单词长度,但不影响最后一个单词的长度
                nowlength =  0;
            }
        }
        return endlength;
    }
}


‍

思路

看示例 2,s = " fly me to the moon ",为了计算最后一个单词的长度,我们需要计算最后一个单词的首尾字母的下标:

单词最后一个字母的下标,也就是最后一个非空格字符的下标,记作 i。上例中 i 是字母 n 的下标。

单词第一个字母的下标,我们可以找到在 i 左边的最近空格的下标,记作 j,那么 j+1 就是这个单词的第一个字母的下标。如果左边没有空格,那么 j=−1。

单词长度为

i−j

作者:灵茶山艾府

链接:https://leetcode.cn/problems/length-of-last-word/solutions/2787453/liang-chong-xie-fa-shou-xie-xun-huan-ku-nmzli/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

class Solution {
    public int lengthOfLastWord(String s) {
        int i = s.length() - 1;
// 只有条件为 `true` 的时候,才会进入循环体执行代码;条件变成 `false`,立刻终止循环,跳到 while 后面。
        while (s.charAt(i) == ' ') {//所以,只要遇到最后一个字母,就退出循环,此时i就是最后一个单词的最后一个字母的下标
            i--;
        }

        int j = i - 1;//j为离单词最近的,即左侧的空白的下标,初始j为i的左边,i-1
        while (j >= 0 && s.charAt(j) != ' ') {// 当遍历到不为空白,继续向左遍历,直到空白停止循环
            j--;
        }

        return i - j; // 单词长度为两个下标相减
    }
}

‍

avatar

LinQin

内陆某双非院校软件工程专业本科生,方向为后端开发,互联网边缘地带人员。

RECOMMENDED

Hello

2026-03-24 07:00:45

LeetCode 面试经典150题

2026-09-14 16:57:12

LeetCode 面试经典150题

2026-09-17 11:51:03

Table of Contents