字符串旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串旋转相关的知识,希望对你有一定的参考价值。

  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;

 

以上是关于字符串旋转的主要内容,如果未能解决你的问题,请参考以下文章

Butterknife 片段旋转给出 NullPointer

如何在没有活动旋转的情况下旋转活动内的片段?

旋转后片段字段为空

使用导航抽屉旋转时的片段更改

在我旋转屏幕之前,LiveData 不会加载到片段中

屏幕旋转后Android片段重叠