c++:翻转句子
剑指offer
·
1、问题描述:翻转句子的每一个单词,例如输入:I am a student,输出为:student a am I。
2、思路:两步走:
(1)先总体翻转每一个字符;
(2)在翻转每一个单词。
3、代码以及测试如下:
#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
void reserve(char* pBegin, char* pEnd)
{
if (nullptr==pBegin||nullptr==pEnd)
{
return;
}
while (pBegin<pEnd)
{
char tmp = *pBegin;
*pBegin = *pEnd;
*pEnd = tmp;
++pBegin;
--pEnd;
}
}
void reserveSentence(char* pData)
{
if (pData==nullptr)
{
return;
}
char* pBegin = pData;
char* pEnd = pData;
while (*pEnd!='\0')
{
++pEnd;
}
--pEnd;
reserve(pBegin, pEnd);
pBegin = pEnd = pData;
while (*pBegin!='\0')
{
if (*pBegin==' ')
{
++pBegin;
++pEnd;
}
else if (*pEnd==' '||*pEnd=='\0')
{
reserve(pBegin, --pEnd);
pBegin=++pEnd;
}
else
{
++pEnd;
}
}
}
int main()
{
char str[] ="i am a student!";
reserveSentence(str);
printf("%s\n", str);
return 0;
}
输出:
注意:测试不要用以下例子:因为该声明是在全局常量区开辟空间,地址对应的值不可修改!
const char* str="i am astudent";
更多推荐
已为社区贡献4条内容
所有评论(0)