实现将一个字符串左旋k个;
例abcdefg左旋3个得到defgabc;
#include<stdio.h>
#include<assert.h>
char* turn(char *str, int k)//逆序函数
{
char *pleft = str;
char *pright = str + k - 1;
assert(str);
while (pleft < pright)
{
char *tmp;
tmp = *pleft;
*pleft = *(pright);
*(pright) = tmp;
pleft++;
pright--;
}
return str;
}
void lefturn(char *str, int k)
{
turn(str, k);//先逆序前k个 abcdefg -> dcba efg
turn(str + k, strlen(str) - k);//再逆序后面的 dcba efg ->dcba gfe
turn(str, strlen(str));//字符串全部逆序 dcba gfe->efg abcd
}
int main()
{
char str[] = { "abcdefg" };
lefturn(str, 3);
printf("%s\n", str);
system("pause");
return 0;
}