题目
实现一个函数,可以左旋字符串中的n个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
思路
void left(char* arr, int n,int sz)
{
while(n>0)//循环2次
{
int i = 0;
int tmp = *arr;//把数组首个元素(A)赋值给tmp,因为左旋以后首元素就变成第二个元素(B)了
while (i < sz-1)//ABCD,BACD,BCAD,BCDA,一次左旋实现
{
*(arr + i) = *(arr + i + 1);//字符左移
*(arr + i + 1) = tmp;//把首元素赋值给右侧元素
i++;
}
n--;
}
}
int main()
{
int n = 2;
char arr[] = "ABCD";
left(arr, n,strlen(arr));//传数组首地址,左旋次数,字符个数
printf("%s", arr);
return 0;
}