题解 | #字符串最后一个单词的长度#

字符串最后一个单词的长度

http://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da

题意理解

输入一串字符串,每个单词由空格分开,输出最后一个单词的长度。

方法一

使用cin直接读入字符串会在遇到第一个空格时就停止,导致读入出错。使用getline()方法读入整行内容。再从后往前遍历,遇到第一个空格就停止,此时遍历了最后一个单词,输出对应的遍历的次数即可。

具体代码如下:

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    getline(cin, s);
    int ans=0, i=s.length()-1;
    while(i>=0 && s[i]!=' ')
    {
        i--;
        ans++;
    }
    cout<<ans;
    return 0;
}

时间复杂度:O(N)O(N)。最坏情况下字符串只有一个单词,N为字符串长度。
空间复杂度:O(1)O(1)。没有开辟新的空间。

方法二

使用while循环进行读入,当后面没有单词时循环终止。

具体代码如下:

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string s;
    while (cin>>s);
    cout<<s.size();
}

时间复杂度:O(N)O(N)。最坏情况下字符串只有一个单词。
空间复杂度:O(1)O(1)。没有开辟新的空间。

全部评论
非常好的答案!极简。
1 回复 分享
发布于 2023-04-07 15:54 上海
你好,方法1为什么i=s.length()-1,中是减1,不考虑多个空格的情况吗?
点赞 回复 分享
发布于 2022-04-23 18:02
为什么while循环方法,cout出来的就是最后一个单词的长度?
点赞 回复 分享
发布于 2022-10-26 21:38 江苏
清晰。
点赞 回复 分享
发布于 2022-11-07 10:24 江西
你这个答案才对,点赞
点赞 回复 分享
发布于 2023-04-25 22:16 北京
6天才
点赞 回复 分享
发布于 2023-08-28 11:42 重庆
牛逼
点赞 回复 分享
发布于 2023-12-08 10:06 安徽

相关推荐

不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
38 7 评论
分享
牛客网
牛客企业服务