
实现一个函数可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB思路如下先将要左旋的k个字符逆置然后将k个字符之后的字符逆置左后将整个字符串逆置。1.逆置字符串的函数void reverse(char *arr,int m){ char *first arr; char *end arr m - 1; char tmp; while (first end){ tmp *first; *first *end; *end tmp; first; end--; } }2.左旋字符串void leftturn(char *arr,int n,int k ){ k % n; int size strlen(arr); reverse(arr,arrk-1);//先将要左旋的字符逆置 reverse(arr k, arr size - 1);//逆置左旋字符后面的字符 reverse(arr, arr size - 1);//将整个字符串逆置 }左旋字符3.整体代码如下#define _CRT_SECURE_NO_WARNINGS #includestdio.h #includestdlib.h #includestring.h void reverse(char *arr,int m){ char *first arr; char *end arr m - 1; char tmp; while (first end){ tmp *first; *first *end; *end tmp; first; end--; } }//逆置字符串 void leftturn(char *arr,int n,int k ){ k % n; int size strlen(arr); reverse(arr,arrk-1);//先将要左旋的字符逆置 reverse(arr k, arr size - 1);//逆置左旋字符后面的字符 reverse(arr, arr size - 1);//将整个字符串逆置 }//左旋字符 int main(){ char arr[] ABCDEF; int n 6; int k; printf(enter k:);//输入要逆置几个字符 scanf(%d, k); if (k 0) return ;//输入的数字小于0时退出程序。 leftturn(arr,6,k); puts(arr);//用puts函数输出字符串 system(pause); return 0; }测试判断一个字符串是否为另外一个字符串旋转之后的字符串。#includestdio.h #includestdlib.h #includestring.h void reverse(char *first,char *last){ char tmp; while (first last){ tmp *first; *first *last; *last tmp; first; last--; } }//逆置字符串 void leftturn(char arr1[],int x,int size){ int n5; x % n; reverse(arr1, arr1 x - 1); reverse(arr1 x, arr1 size-1); reverse(arr1, arr1 size - 1); } int main(){ char arr1[] AABCD; char arr2[] BCDAA; int k 2; int size strlen(arr1); leftturn(arr1,k,size); puts(arr1);//输出左旋后的arr1 if (strcmp(arr1, arr2) 0)//用strcmp函数比较两个字符串是否相等 printf(两个字符串相等\n); else printf(两个字符串不相等\n); system(pause); return 0; }给定arr1AABCD,并让arr1左旋两个字符。,给定arr2BCDAA。判断arr2是不是arr1左旋两个字符之后的字符串。arr1AABCD并左旋3个字符arr2aabcd,判断arr2是不是arr1左旋两个字符之后的字符串。修改代码以下3行char arr1[] AABCD; char arr2[] aabcd; int k 3;