一.题目描述
二.测试用例
//用例输入
who are you
Welcome to Northeast university of Qinhuangdao
//用例输出
you are who
Qinhuangdao of university Northeast to Welcome
三.逆向双指针start,end,从最后一个字符开始,start向前遍历,遇空格输出单词(start+1到end字符串),更新end = start;
**需要注意的是,字符串前有空格,需要在结尾处输出
四.代码实现
#include<iostream>
#include<cstring>
using namespace std;
const int N = 110;
void reverse(string str)
{
int len = str.size();
int start = len - 1;
int end = len;
if(str[start]==' ')
{
cout<<' ';
start --;
end --;
}
while(str[start]!='\0'&&start>=0)
while(start--)
{
if(str[start] == ' ')
{
for(int i = start+1;i<end;i++) cout<<str[i];//遇空格输出前一个单词
end = start;
cout<<' ';
}
}
for(int i=0;i<end;i++) cout<<str[i];
cout<<endl;
}
int main()
{
string str;
while(getline(cin,str))
{
reverse(str);
}
return 0;
}