例如,句子"I miss you now"转为"now you miss I"。
思路是先将整个句子翻转过来,然后再将每一个单词重新翻转一次,便可以得出翻转单词顺序的效果。
代码示例:
void Reverse(char* pb , char* pe) //将某一段字符串翻转过来
{
char *pl = pb , *pr = pe;
while(pl!=pr&&pl&&pr)
{
char temp = *pl; //不能写成char * temp = pl;否则交换字符的操作失败
*pl = *pr;
*pr = temp;
if(pl+1==pr)break;
pl++;
pr--;
}
}
char * reverseSentence(char * pData)
{
if(!pData)return NULL;
char * pBegin = pData;
char * pEnd = pData;
while(pEnd&&*pEnd!='\0')pEnd++;
pEnd--;
Reverse(pBegin,pEnd); //整个句子翻转
pBegin = pEnd = pData;
while(pEnd&&*pEnd!='\0') //翻转每个单词
{
while(*pEnd!='\0'&&*pEnd!=' ')pEnd++;
--pEnd;
Reverse(pBegin , pEnd);
++pEnd;
while(*pEnd!='\0'&&*pEnd==' ')pEnd++;
pBegin = pEnd;
}
return pData;
}