• 字符串旋转


      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;
  • 相关阅读:
    Linux C/C++ 利用scandir和alphasort遍历目录文件并排序
    C++11 多线程之互斥量、条件变量、call_once使用简介
    Win8 ApplicationModel Angkor:
    WinJS.Binding Angkor:
    WinJS.UI.Animation Angkor:
    WinJS.Class Angkor:
    WinJS.Application Angkor:
    WinJS.Promise Angkor:
    Rocket core ctrl_stalld和ctrl_killd
    Rocket core pipeline和replay
  • 原文地址:https://www.cnblogs.com/xjq6898/p/7788601.html
Copyright © 2020-2023  润新知