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("左旋转几个字符\n");
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("左旋转几个字符\n");
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!\n");
107 }
108 else
109 {
110 printf("no!\n");
111 }
112 system("pause");
113 return 0;