实现将字符串右循环n位
实现将字符串右循环n位,eg:''abcdefgh",右移两位得到"ghabcdef".
思考:将最后一个保存下来,剩余的后移一位,将保存的最后一位赋给首元素,循环steps次即可。
代码如下:
#include<stdio.h>
#include<iostream>
#include<assert.h>
void RightMove(char *pstr, unsigned short steps)
{
int i = 0;
int len = strlen(pstr);
assert(pstr != NULL);
for (i = 0; i < steps; i++)
{
char tmp = *(pstr + len - 1); //保存最后一个字符
int j = 0;
for (j = len - 1; j >= 1; j--)
{
*(pstr + j) = *(pstr + j - 1); //右移一位
}
*pstr = tmp;
}
}
int main()
{
char arr[] = "abcdefgh";
RightMove(arr, 2);
printf("%s\n", arr);
system("pause");
return 0;
}
结果如下: