您的位置:首页 > Web前端

剑指Offer——翻转英文句子中的单词顺序

2016-04-07 15:20 375 查看
主要思路:

先交换整个句子的顺序,再交换每个单词的顺序。

一下代码在VS2015中调试无误

#include "stdafx.h"
#include<iostream>
using namespace std;

void Reverse(char *pBegin, char *pEnd)
{
if (NULL == pBegin || NULL == pEnd)
return;
while (pBegin < pEnd)
{
char temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;

pBegin++, pEnd--;
}
}

char* ReverSentence(char *pData)
{
if (NULL == pData)
return NULL;
char *pBegin = pData;
char *pEnd = pData;
while (*pEnd != '\0')
pEnd++;
pEnd--;
//反转整个句子
Reverse(pBegin, pEnd);

//反转每个单词
pBegin = pEnd = pData;
while (*pBegin != '\0')
{
if (*pBegin == ' ')
{
pBegin++;
pEnd++;
}
else if (*pEnd == ' ' || *pEnd == '\0')
{
Reverse(pBegin, --pEnd);
pBegin = ++pEnd;
}
else
{
pEnd++;
}
}

return pData;
}

int main()
{
char input[]="i am a student.";
printf("input is : \n %s \n", input);
if (NULL != ReverSentence(input))
printf("after reverse is:\n %s \n",input);
while (1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: