首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求一字符串置换算法解决办法

2012-03-18 
求一字符串置换算法比如将Im a student转换成student a Im要求不新开辟空间,在原字符串上操作,谢谢[解决

求一字符串置换算法
比如将I'm a student转换成student a I'm

要求不新开辟空间,在原字符串上操作,谢谢

[解决办法]
I 'm a student -> tneduts a m' I -> student a m' I
[解决办法]

#include "iostream"

using namespace std;

int main()
{
char src[] = "I'm a student";
size_t len = strlen(src);

for (size_t i = 0, j = len - 1; i < j; ++i, --j) 
{
char t = src[i];
src[i] = src[j];
src[j] = t;
}

size_t prev = 0;
char* p = strchr(src, ' ');
while (p) 
{
for (size_t i = prev, j = p - src - 1; i < j; ++i, --j) 
{
char t = src[i];
src[i] = src[j];
src[j] = t;
}
prev = p - src + 1;
p = strchr(++p, ' ');
}

if (p != &src[len - 1])
{
p = &src[len] - 1;
for (size_t i = prev, j = p - src; i < j; ++i, --j) 
{
char t = src[i];
src[i] = src[j];
src[j] = t;
}
}

cout<<src<<endl;

return 0;
}

热点排行