C++11 逆序输出单词
句子逆序
http://www.nowcoder.com/questionTerminal/48b3cb4e3c694d9da5526e6255bb73c3
//思路:遇到空格就记录,两个空格之间正序输出,现在的空格用now表示,上一次空格用last表示,输出单词后,空格单独输出,最后单独处理第一个单词。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
getline(cin,str);
int len=str.length(),now,last=len;//起始last位置
for(int i=0;i<len;i++)
if(str[len-1-i]==' ')//遇到空格就是输出
{
now=len-1-i; //空格位置
for(int j=now+1;j<last;j++)
{
cout<<str[j];//从now到last输出。不要空格
}
cout<<" ";//当单独输出空格
last=now;//last到的位置往前移
}else if(i==len-1)//遇到第一个单词没有空格,直接输出
{
now=len-1-i;
for(int j=now;j<last;j++)
{
cout<<str[j];
}
}
return 0;
}</string></iostream>