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.

  • 相关阅读:
    git拉取代码命令
    zookeeper(version3.6.3)安装使用《一》
    kafka(version2.1.3)安装<一>
    linux安装jdk
    linux安装支持文件上传下载的命令
    mapstruct 再也不用set不同的属性而劳累了
    RabbitMq确认消费,与重复消费避免使用冥等
    java8之非重入锁StampedLock ,并发的另一种处理方式
    微信Jssdk
    Vue-Router 的params和query传参两种方式
  • 原文地址:https://www.cnblogs.com/guotao/p/2636642.html
Copyright © 2011-2022 走看看