开启掘金成长之旅!这是我参与「掘金日新计划 · 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 <= 104s仅有英文字母和空格' '组成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)