题目描述
计算字符串最后一个单词的长度,单词以空格隔开。
思路
要计算最后一个单词的长度,肯定时用"倒叙"的修辞手法啦。从最后一个往回遍历,遇到空格停下来。
代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
int res=0;
while(getline(cin,str)){
for(int i=str.size()-1;i>=0;--i){
++res;
if(str[i]==' '){//如果读到空格就停下来输出,结束
cout<<(res-1);
return 0;
}
}
}
cout<<res;
return 0;
}
一些小笔记
1. 问题:当要输入"Hello World"时,如果单纯cin>>str,只会输入Hello,到空格就停止了
解决方法:getline(cin,str):将以‘/n’为结束符做为一完整读取的一行,'/n'会读。之前用cin读取一个字符的时候,输入一个字符然后点击回车结束,那么这里同样也是表示回车才结束读取。
2.其实这一个解答还不是非常完善。因为如果输入字符串是"Hello World ",这个结果本来是5,但是我这样子应该输出为0。
应该看到末尾的空格,可用continue跳过。