纪念逝去的岁月——C/C++字符串旋转

时间:2022-02-01 22:47:50

几年前,我还不会写这个

例如:

1、向右→旋转5个字符

输入:HelloWorld

输出:WorldHello

2、向右→旋转3个字符

输入:HelloWorld

输出:rldHelloWo

代码

 #include <string.h>
#include <stdio.h>
#include <stdlib.h> int scrollstr(char * p, int iStep)
{
if(NULL == p)
{
return -;
}
int iLen = strlen(p);
iStep %= iLen;
if( == iStep)
{
return ;
}
char * pt = (char *)malloc(iLen + );
if(NULL == pt)
{
return -;
}
memset(pt, , iLen + );
int i = ;
for(i = ; i <= iStep; i++)
{
pt[iStep - i] = p[iLen - i];
}
for(i = ; i <= iLen - iStep; i++)
{
p[iLen - i] = p[iLen - i - iStep];
}
for(i = ; i < iStep; i++)
{
p[i] = pt[i];
} return ;
} int main()
{
char pX[] = {"HelloWorld"}; printf("src : [%s]\n", pX);
scrollstr(pX, );
printf("dst : [%s]\n", pX); return ;
}

编译

$ g++ -o scrollstring scrollstring.cpp

运行

$ ./scrollstring
src : [HelloWorld]
dst : [WorldHello]

再见……