题目要求:
实现一个函数,可以左旋字符串中的k个字符。
例如:
ABCD左旋一个字符得到BCDA
ABCD左旋两个字符得到CDAB
方法一
最容易想到的一种方法,左旋一次其实是把字符串第一个字符先保存起来,然后字符串整体向左挪一步,最后再把最初保存起来的第一个字符放到字符串末尾,即完成了一次左旋 ,实现多次左旋则利用循环即可。
//abcd1234
//char temp = 'a';
//Xbcd1234
//bcd1234a
具体代码实现:
#include <stdio.h>
#include <assert.h>
#include <windows.h>
#pragma warning(disable:4996)
void LeftRotate(char *str, int len, int num)
{
assert(str);
assert(len > 0);
assert(num >= 0);
num %= len;//去重
while (num){
char temp = str[0];
int i = 0;
for (; i < len - 1; i++){
str[i] = str[i + 1];
}
str[i] = temp;
num--;
}
}
int main()
{
char str[] = "abcd1234";
int len = strlen(str);
int num = 0;
printf("请输入你想左旋的次数:");
scanf("%d