您的位置:首页 > 其它

翻转单词顺序

2016-11-02 22:36 162 查看
代码:

#include <iostream>

using namespace std;

//翻转字符数组
void Reverse(char* pBegin, char* pEnd)
{
if (pBegin == nullptr || pEnd == nullptr)
return;

while (pBegin < pEnd)
{
char temp = *pBegin;
*pBegin = *pEnd;
*pEnd = temp;

--pEnd;
++pBegin;
}
return;
}

//翻转单词顺序
char* ReveseWordOrder(char* pSetence)
{
if (pSetence == nullptr)
return nullptr;

char* pEnd = pSetence;
while (*pEnd != '\0')
++pEnd;

//翻转句子
Reverse(pSetence, --pEnd);

//翻转单词
char* pHead = pSetence;
char* pTail = pHead;
while (*pHead != '\0')
{
if (*pHead == ' ')
{
++pHead;
++pTail;
}
else if (*pTail == ' ' || *pTail == '\0')
{
Reverse(pHead, --pTail);
pHead = ++pTail;            //指向下一个单词的开始或'\0'
}
else
{
++pTail;
}
}
return pSetence;
}

int main()
{
char String[] = "I am a student.";
ReveseWordOrder(String);
int nlength = sizeof(String) / sizeof(char);
cout << String;

cout << endl;
system("pause");
return 0;
}


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