1 1.实现一个函数,可以左旋字符串中的k个字符。 2 ABCD左旋一个字符得到BCDA 3 ABCD左旋两个字符得到CDAB 4 2.判断一个字符串是否为另外一个字符串旋转之后的字符串。 5 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0. 6 AABCD左旋一个字符得到ABCDA 7 AABCD左旋两个字符得到BCDAA 8 AABCD右旋一个字符得到DAABC 9 1. 10 1. 11 1. #include <stdio.h> 12 2. #include <windows.h> 13 3. #include <assert.h> 14 4. void fun(char *arr, int n) 15 5. { 16 6. assert(arr); 17 7. assert(n); 18 8. int i=0; 19 9. int j=0; 20 10. char temp=0; 21 11. int len=strlen(arr); 22 12. for(i=0;i<n;i++) 23 13. { 24 14. temp=*arr; 25 15. for(j=0;j<len-1;j++) 26 16. { 27 17. *(arr+j)=*(arr+j+1); 28 18. } 29 19. *(arr+len-1)=temp; 30 20. } 31 21. } 32 22. int main() 33 23. { 34 24. char arr[]="ABCD"; 35 25. int k=0; 36 26. printf("左旋转几个字符 "); 37 27. scanf("%d",&k); 38 28. fun(arr,k); 39 29. printf("%s",arr); 40 30. system("pause"); 41 31. 42 32. } 43 2 44 #include <stdio.h> 45 #include <windows.h> 46 #include <assert.h> 47 void reverse(char *left,char *right) 48 { 49 assert(left); 50 assert(right); 51 while(left<right) 52 { 53 char temp=*left; 54 *left=*right; 55 *right=temp; 56 left++; 57 right--; 58 } 59 } 60 void fun(char *arr, int n) 61 { 62 assert(arr); 63 int len=strlen(arr); 64 reverse(arr,arr+n-1); 65 reverse(arr+n,arr+len-1); 66 reverse(arr,arr+len-1); 67 } 68 int main() 69 { 70 char arr[]="ABCD"; 71 int k=0; 72 printf("左旋转几个字符 "); 73 scanf("%d",&k); 74 fun(arr,k); 75 printf("%s",arr); 76 system("pause"); 77 78 } 79 2.#include <stdio.h> 80 #include <windows.h> 81 #include <assert.h> 82 int is_move(char *s1, char *s2) 83 { 84 assert(s1); 85 assert(s2); 86 int len1=strlen(s1); 87 int len2=strlen(s2); 88 if(len1!=len2) 89 { 90 return 0; 91 } 92 else 93 { 94 strncat(s1,s2,len1); 95 if(strstr(s1,s2)) 96 { 97 return 1; 98 } 99 } 100 } 101 int main() 102 { 103 char arr[]="ABCDEF"; 104 if(is_move(arr,"CDEFAB")) 105 { 106 printf("ok! "); 107 } 108 else 109 { 110 printf("no! "); 111 } 112 system("pause"); 113 return 0;