【剑指offer】字符串最后一个字符的长度

这个题在《剑指offer》和【LeetCode】上面都有,但是有一定区别。
这篇博客讲《剑指offer》上面的字符串最后一个单词的长度
计算字符串最后一个单词的长度,单词以空格隔开。
输入描述:
一行字符串,非空,长度小于5000。
输出描述:
整数N,最后一个单词的长度。

示例:
输入
hello world
输出
5

我们先展示代码,然后再讲解。

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str;
    while(getline(cin,str))
    {
       size_t pos=str.rfind(' ',str.size());//找到最后一个空格的位置
       cout<<str.size()-pos-1<<endl;
    }
    return 0;
}

因为单词以空格隔开,要求最后一个单词的长度,只需要求出最后一个空格的位置,然后利用 string 类的 size 接口及 rfind 接口就可以解决问题。
在这里插入图片描述
在这里插入图片描述
但是这个题的难度貌似不在这里,因为要自己输入一行字符串,使用 cin 的时候,当遇到空格,就会终止输入。这个问题才应该是这个问题考察的侧重点,在这里我们用 getline 来解决。
在这里插入图片描述
从流到字符串获取行
从提取的字符是并将其存储到STR直到划界字符DELIM被发现(或换行字符,“\ n”,对于(2) )。
如果到达文件末尾或者在输入操作期间发生某些其他错误,则提取也会停止。
如果找到分隔符,则将其提取并丢弃(即不存储它,并且下一个输入操作将在其后开始)。

猜你喜欢

转载自blog.csdn.net/lvxin15353715790/article/details/83793174
今日推荐