题目:
实现一个函数,可以左旋字符串中的k个字符。
例如:
- ABCD左旋1个字符得到BCDA
- ABCD左旋2个字符得到CDAB
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <string.h>
//除第1个外,全部往前1位,然后原第1个填充至极右
void Left_reverse(char* p, int num)
{
assert(p);
int len = strlen(p);
char tem = 0;
int i = 0;
num %= len;
while (num--)
{
tem = *p;//记录极左值
for (i = 0; i < len - 1; i++)//其它值往前移
{
*(p + i) = *(p + i + 1);
}
*(p + len - 1) = tem;//极左 --> 极右
}
}
int main()
{
int input = 0;
char str[] = "ABCDE";
Left_reverse(str, 2);
printf("%s\n", str);
return 0;
}