题目:实现一个函数,可以左旋字符串中的k个字符。
比如:ABCD左旋一个字符得到BCDA
方法一:
可以定义一个temp变量临时保存第一个字符,然后从第二个元素开始,依次往前移动,最后将第一个字符放到最后就好了,要左旋多少个就把之前步骤重复多少次
- 注意:如果左旋次数多的话,有些中间的结果会和最终结果一样,所以求出有效左旋次数会优化些
代码如下:
void LeftMove(char *str, int len,int num)
{
assert(str);
assert(len>0);
assert(num);
num %= len;//有效次数
while (num--)//左旋次数
{
//左旋一次的步骤
int i = 0;
char temp = *str;//放第一个字符
for (; i < len - 1; i++)
{
str[i]<