您的位置:首页 > 其它

翻转句子中单词的顺序。

2012-03-08 16:58 183 查看
10、翻转句子中单词的顺序。

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。

句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

例如输入“I am a student.”,则输出“student. a am I”。

//coder:LEE

//20120308

#include<iostream>

#include<cassert>

using namespace std;

void Swap(char *a,char *b)

{

*a=*a^*b;

*b=*a^*b;

*a=*a^*b;

}

void Reverse(char A[],int length)

{

assert(A!=NULL&&length>0);

int p=0;

int q=length-1;

while(p<q)

{

Swap(&A[p],&A[q]);

++p;

--q;

}

}

void ReverseSequence(char A[],int length)

{

assert(A!=NULL&&length>0);

char *beg=A;

char *end=A;

while (end<A+length)

{

while (*beg==' '&&end<A+length)//end<A+length条件不能少

{

++beg;

++end;

}

if(beg==A+length)

break;

while(*end!=' '&&end<A+length)

++end;

Reverse(beg,end-beg);

beg=end;

}

Reverse(A,length);

}

int main()

{

char A[]=" I am a Student. ";

ReverseSequence(A,sizeof(A)/sizeof(char)-1);//减一原因:最后的字符'\0'不参与逆序

for (int i=0;i<sizeof(A)/sizeof(char)-1;i++)

{

cout<<A[i];

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: