实现一个函数,可以左旋字符串中K个字符
例如 abcdefgh 左旋2个字符 cdefghab
利用3次旋转达到我们的目的
首先把要旋转的K个字符逆序得到bacdefgh
然后把剩余的字符逆序得到bahgfedc
最后把所有的字符逆序得到我们想要的cdefghab
下面我们用代码来实现
#include<stdio.h>
#include<string.h>
void reverse(char *left,char*right)//逆序
{
while (left <= right)
{
char tmp;
tmp = *left;
*left = *right;
*right = tmp;
left++, right--;
}
}
void reverse_left(char *src,int k)
{
int len = 0;
len = strlen(src);
reverse(src, (src + k-1));//要旋转的k个字符逆序
reverse((src + k ), (src + len-1));//之后的字符逆序
reverse(src, (src + len-1));//所有的字符逆序
}
int main()
{
int k = 2;
char src[] = "abcdefgh";
reverse_left(src, k);
printf("%s", src);
return 0;
}