题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述:
将一个英文语句以单词为单位逆序排放。
输出描述:
得到逆序的句子
示例1
输入
I am a boy
输出
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
输入描述:
将一个英文语句以单词为单位逆序排放。
输出描述:
得到逆序的句子
示例1
输入
I am a boy
输出
boy a am I
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void ReverseWord(string::iterator pBegin, string::iterator pEnd) //翻转指定的字符串
{
while(pBegin < pEnd)
{
char temp=*pBegin;
*pBegin=*pEnd;
*pEnd=temp;
++pBegin;
--pEnd;
}
}
void ReverseSentence(string &str)
{
if(str.size()==0)
return;
string::iterator pBegin=str.begin();
string::iterator pEnd=str.end();
--pEnd;
ReverseWord(pBegin,pEnd);
pBegin=str.begin();
pEnd=str.begin();
while(pBegin < str.end())
{
if(*pBegin == ' ')
{
++pBegin;
++pEnd;
}
else if(pEnd == str.end() || *pEnd == ' ')
{
--pEnd;
ReverseWord(pBegin,pEnd);
++pEnd;
pBegin=pEnd;
}
else
++pEnd;
}
}
int main(void)
{
string str;
while(getline(cin,str))
{
ReverseSentence(str);
cout<<str<<endl;
}
system("pause");
return 0;
}