您的位置:首页 > 职场人生

一道面试题--翻转英文句子中的单词顺序

2011-09-24 00:22 393 查看
例如,句子"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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐