思路:
”abcdef“这个字符串如果要左旋2个字符,可以分为“ab”,"cdef"两个字符串,”ab“字符串反转,“cdef”也反转,最后再把反转完成的整个字符串也反转一次。就实现了字符串反转。注意:旋转的字符个数不能超过字符串长度。
#include <stdio.h>
void reverce(char* start,char* end)
{
char* left = start;
char* right = end;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void left_move(char* str, int k)
{
int len = strlen(str);
reverce(str,str+k-1);
reverce(str + k, str + len - 1);
reverce(str, str + len - 1);
}
/// <summary>
/// 实现函数,可以左旋字符串中的k个字符。
///
/// 如:abcd 左旋一个字符:bcda
/// 如:abcd 左旋二个字符:cdab
///
/// </summary>
/// <returns></returns>
int main()
{
char arr[] ="abcdef";//需要移动的字符数组。
int k = 2; //需要移动的字符个数。
left_move(arr, k);
printf("%s", arr);
return 0;
}