问题:
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。
为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
答案:
//20121212
#include <iostream>
#include <string>
#include <stack>
using namespace std;
void allReverse(string &s);
void wordReverse(string &s);
int main()
{
string s;
getline(cin,s);
allReverse(s);
wordReverse(s);
cout<<s<<endl;
return 0;
}
void allReverse(string &s)
{
int z=s.size();
char c;
for (int i=0,j=z-1;i<z/2;i++,j--)
{
c=s[i];
s[i]=s[j];
s[j]=c;
}
}
void wordReverse(string &s)
{
int z=s.size();
stack<char> sc;
for (int i=0;i<z;i++)
{
int j;
for (j=i;j<z;j++)
{
if (s[j]==char(' '))
{
break;
}
else
{
sc.push(s[j]);
}
}
while(sc.size()!=0)
{
s[i++]=sc.top();
sc.pop();
}
}
}