目录

  • 力扣经典150题第十九题:最后一个单词的长度
  • 1. 题目描述
  • 2. 解题思路
  • 3. 解题步骤
  • 4. 代码实现
  • 5. 时间复杂度分析
  • 6. 应用和扩展
  • 7. 总结
  • 8. 参考资料


力扣经典150题第十九题:最后一个单词的长度

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. 解题思路

从字符串末尾开始向前遍历,找到最后一个单词的起始位置和结束位置,然后计算其长度。

3. 解题步骤

  1. 去除字符串末尾的空格,防止计算错误。
  2. 从字符串末尾开始向前遍历,直到找到第一个非空格字符,确定最后一个单词的结束位置。
  3. 继续向前遍历,直到找到第一个空格字符或到字符串的开头,确定最后一个单词的起始位置。
  4. 根据起始位置和结束位置计算最后一个单词的长度。

4. 代码实现

class Solution {
    public int lengthOfLastWord(String s) {
        // Trim trailing spaces
        s = s.trim();
        int length = 0;
        int i = s.length() - 1;
        
        // Find the end of the last word
        while (i >= 0 && s.charAt(i) != ' ') {
            length++;
            i--;
        }
        
        return length;
    }
}

5. 时间复杂度分析

  • 该算法的时间复杂度为 O(n),其中 n 是字符串 s 的长度。需要一次字符串的遍历来计算最后一个单词的长度。

6. 应用和扩展

  • 该算法可以用于计算字符串中最后一个单词的长度,通过从字符串末尾向前遍历来确定单词的起始和结束位置。
  • 可以应用于处理字符串相关的问题,特别是处理单词和空格分隔的情况。

7. 总结

本文介绍了如何计算字符串中最后一个单词的长度,通过从字符串末尾向前遍历来确定单词的起始和结束位置,然后计算单词的长度。

8. 参考资料