题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”
void reverseOrder(char pStr[], int begin, int end)
{
if(begin >= end)
return;
int mid=(end+begin+1)/2;
for(int i=begin; i<mid; i++)
{
char temp = pStr[i];
pStr[i] = pStr[begin+end-i];
pStr[begin+end-i] = temp;
}
}
int main()
{
char p[] = "This is an example!";
char* q=p;
// 1. 翻转整个句子
reverseOrder(p, 0, strlen(p)-1);
// 2. 翻转单词
int end=0;
int begin=0;
for(;*q!='\0'; q++,end++)
{
if(*q == ' ')
{
reverseOrder(p, begin, end-1);
begin=end+1;
}
}
reverseOrder(p, begin, end-1);
cout << p << endl;
cout<<endl;
}