zoukankan      html  css  js  c++  java
  • 判断s2是否能够被通过s1做循环移位(rotate)得到的字符串是否包含

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

    看到 这里的一个思路 字符串移位包含的问题(编程之美)

    引用原文

      解法二:我们也可以对循环移位之后的结果进行分析。

    以S1 = ABCD为例,先分析对S1进行循环移位之后的结果,如下所示:

    ABCD--->BCDA---->CDAB---->DABC---->ABCD……

    假设我们把前面的移走的数据进行保留,会发现有如下的规律:

    ABCD--->ABCDA---->ABCDAB---->ABCDABC---->ABCDABCD……

    因此,可以看出对S1做循环移位所得到的字符串都将是字符串S1S1的子字符串。如果S2可以由S1循环移位得到,那么S2一定在S1S1上,这样时间复杂度就降低了。

    代码如下:为什么不封装呢?你猜。

     1  static void Main(string[] args)
     2         {
     3            
     4             String s1="ABDDE";  
     5             String s2="DDAB";
     6             string s3=string.Concat(s1,s1);
     7             if (s3.Contains(s2))
     8             {  
     9             Console.WriteLine("true");  
    10         }else{
    11             Console.WriteLine("false");  
    12         }  
    13             Console.ReadKey();
    14 
    15         }

                          ------再一次站在巨人的肩膀上

  • 相关阅读:
    嵌入式整体框架——总结
    DSP Bios记忆
    三遥
    usb设备 配置 接口 端点
    ARM, MIPS, Power PC的比较
    STM32 IAP
    FSMC 总结
    BCD码与十进制的相互转换
    读 “cortexM3” 权威指南 小记(一)
    crc校验码的16 32位 查表法 算法记载
  • 原文地址:https://www.cnblogs.com/aguan/p/4123358.html
Copyright © 2011-2022 走看看