58. 最后一个单词的长度-LeetCode(C++)

58. 最后一个单词的长度

题目

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

提示:

  • 1 <= s.length <= 104
  • s 仅有英文字母和空格 ' ' 组成
  • 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”。
题解

来源于星晴pro - 力扣(LeetCode)

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

力扣上关于字符串的题目中有一类很特殊,就是给一个字符串组成的句子(带空格或标点),然后对句中单个字符串进行一系列处理的题目。核心思想,就是先把句子中所有字符串取出放入字符串数组,而遍历句子取字符串的思路,就是遇到字符把它放入临时字符串,遇到空格或者标点(如果有标点),就把临时字符串输出,并且清空

如果有前后置空格,那么必须判断临时字符串非空才能输出,否则会输出空串
模板如下:

s += " "; //这里在最后一个字符位置加上空格,这样最后一个字符串就不会遗漏
string temp = "";  //临时字符串
vector<string> res; //存放字符串的数组
for (char ch : s)  //遍历字符句子
{
    if (ch == ' ') //遇到空格
    {
        if (!temp.empty()) //临时字符串非空
        {
            res.push_back(temp);
            temp.clear();  //清空临时字符串
        }
    }
    else
        temp += ch; 
}

本题:

class Solution {
public:
    int lengthOfLastWord(string s) {
        if (s.empty()) 
            return 0;
        s += " ";
        vector<string> res;
        string temp;
        for(char ch :s){
            if(ch == ' '){
                if(!temp.empty()){
                    res.push_back(temp);
                    temp.clear();
                }
            }else{
                temp += ch;
            }
        }
        if (res.empty())
            return 0;
        return res.back().size();
    }
};
C++相关语法: <string> 头文件中的常用函数
  1. s.empty():判断字符串是否为空。
  2. s.clear():清除字符串。
  3. s.pop_back():去掉最后一个字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值