/*************************************************
题目:翻转句子中单词的顺序
如:I am a student 输出tneduts a ma I
思路:两次翻转
1.先翻转整个句子
2.依次翻转每个单词
****************************************************/
//翻转函数
void Reverse(char *pBegin,char* pEnd)
{
if(pBegin == NULL || pEnd == NULL)return;
while(pBegin < pEnd)
{
char tmp = *pBegin;
*pBegin = *pEnd;
*pEnd = tmp;
pBegin++,pEnd--;
}
}
//对句子翻转
char* ReverseSentence(char *arr)
{
if(arr == NULL)return NULL;
//先确定收尾指针
char *pBegin = arr;
char *pENd = arr;
while(*pEnd != '\0')
{
pEnd++;
}
pEnd--;
Reverse(pBegin,pEnd);//反转句子
//翻转句子中的每个单词
pBegin = pEnd = arr;
while(*pBegin!='\0')
{
if(*pBegin == ' ')//在单词前边的空格
{
pBegin++;
pEnd++;
}
else if(*pEnd == ' '||*pEnd =='\0')//pEnd遍历到单词末尾
{
Reverse(pBegin,--pEnd);
pBegin = ++pEnd;//现在都指向空格
}
else//最开始pBegin不为空格,pEnd也在单词中间
{
pEnd++;
}
return arr;
}
}
翻转句子中单词的顺序
最新推荐文章于 2021-02-04 14:10:25 发布