题目内容
//实现一个函数,可以左旋字符串中的k个字符
//例如:
//ABCD左旋一个字符得到BCDA
//ABCD左旋两个字符得到CDBA
暴力求解法
先创建一个中间变量,把第一个字符串存起来,然后把后面的字符依次往前移
代码实现
//void Left_move(char* arr,int k)
//{
// int i = 0;
// int len = strlen(arr);//求字符串长度
// for ( i = 0; i < k; i++)
// {
// //左旋一个字符
// char tmp = *arr;//创建中间变量
// int j = 0;
// for (j = 0; j <len-1 ; j++)
// {
// *(arr + j) = *(arr + j + 1);//将后面的字符往前移
// }
// *(arr + len - 1) = tmp;//将字符放回最后
// }
//}
三部求解
假如我要左旋两个字符
//abcdef 先把ab cdef拆开,然后分别逆序
//ba fedc 然后再逆序,最后打印
//cdefab
代码实现
void reverse(char* left, char* right)
//{
// assert(left);
// assert(right);
// while (left<right)
// {
// char tmp = *left;
// *left = *right;
// *right = tmp;
// left++;
// right--;
// }
//}
//
//
//void Left_move(char* arr, int k)
//{
// int len = strlen(arr);
// assert(k < len);
//
// reverse(arr,arr+1);//逆序左边
// reverse(arr + k,arr+len-1);//逆序右边
// reverse(arr,arr+len-1);//逆序整体
//
//}
int main()
{
char arr[] = "abcdef" ;
Left_move(arr, 4);
printf("%s\n", arr);
return 0;
}