58. 最后一个单词的长度

105 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

一、题目描述:

58. 最后一个单词的长度 - 力扣(LeetCode)   给你一个字符串 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 中至少存在一个单词

二、思路分析:

本题题意很简明,但是需要避免一个坑!就是末尾是空格的情况。题目没有明确说明,当末尾是空格时,实际返回的结果是:空格前面的一个单词的长度。

因此,对于本题,最简单的做法是:倒序遍历字符串,跳过字符串末尾的所有空格,同时计算最后一个单词的长度。

三、AC 代码:

class Solution {
public:
    int lengthOfLastWord(string s) {
        int ans = 0, i = s.size()-1;
        while(i >= 0 && s[i] == ' ') --i; //跳过末尾所有的空格
        while(i >= 0)
        {
            if(s[i]!=' ') 
            {
                ans++; //计数
                i--;
            }
            else
                break; //当遇到空格时,跳出循环
        }
        return ans;
    }
};

**范文参考:

最后一个单词的长度 - 最后一个单词的长度 - 力扣(LeetCode) (leetcode-cn.com)

画解算法:58. 最后一个单词的长度 - 最后一个单词的长度 - 力扣(LeetCode) (leetcode-cn.com)

用s.trim()去掉字符串的前后空格,从第一个单词开始计数,若中间遇到空格,计数器重置为零 - 最后一个单词的长度 - 力扣(LeetCode)