读书人

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

发布时间: 2012-03-18 13:55:39 作者: rapoo

求一字符串置换算法
比如将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;
}

读书人网 >C++

热点推荐