zoukankan      html  css  js  c++  java
  • 字符串移位包含的问题

    /*********************字符串移位包含的问题********************/
    /*给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的*/
    /*字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1= */
    /*ABCD和s2=ACBD,返回false。 */
    /*************************************************************/

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #define TRUE 1
    #define FALSE 0
    #define SPACE 1

    int rotate(char *src, char *des);
    int main()
    {
      char src[] = "AABCD";
      char des[] = "DA";

      if(rotate(src,des) == TRUE)
      {
        printf("true\n");
      }else
      {
        printf("false\n");
      }

      return 0;
    }

    int rotate(char *src, char *des)
    {
    #if SPACE
      int len = strlen(src);

      char *p = (char *)malloc(len*2*sizeof(char)+1);
      for(int i =0; i < len ; i++)
      {
        p[i] = src[i];
      }

      for(int j = len; j < len*2; j++)
      {
        p[j] = src[j-len];
      }
      p[len*2] = '\0';
      printf("%s\n",p);

      if(strstr(p,des) == 0)
      {
        return FALSE;
      }
      return TRUE;

    #else
      int len = strlen(src);
      for(int i = 0; i < len - 1; i++)
      {
      char tempchar = src[0];
      for(int j = 0;j < len - 1; j++)
        src[j] = src[j + 1];
      src[len-1] = tempchar;
      if(strstr(src,des) != 0)
      {
        return TRUE;
      }
      }
      return FALSE;

    #endif
    }

     

    这是一道比较简单的算法题,有两种解法。代码为本人所写- -不是尽善尽美的,只能说功能实现了。

    第一种解法提高了空间复杂度来换取时间复杂度的降低。除了重新申请空间,鄙人也尝试用realloc函数来重新分配空间,但是realloc函数只能为由malloc()申请的内存重新分配内存。src作为指针传入函数之后,用realloc重新分配未能成功。

    第二种解法提高了时间复杂度来换取空间复杂度的降低。

     

    本题为编程之美的3.1.

  • 相关阅读:
    [转载]Matlab实用小技巧
    Matlab rand randn randint
    Matlab取整
    Mathtype报错:MathType has detected an error in....
    [转载]十大编程算法助程序员走上高手之路
    (转)Free函数的参数一定要是malloc返回的那个指针
    sizeof,一个其貌不扬的家伙(转)
    ISO C Random Number Functions
    srand() rand() time(0)
    IOS之文件夹创建、删除,图片在本地的保存和加载
  • 原文地址:https://www.cnblogs.com/guotao/p/2636642.html
Copyright © 2011-2022 走看看