zoukankan      html  css  js  c++  java
  • 串的重复

    /*
    题目:串的重复
    内容:

    代码的目标:判断一个串是否为某个基本串的简单复制构成的。

    例如:
    abcabcabc,它由“abc”复制3次构成,则程序输出:abc
    aa 由“a”复制两次构成,则程序输出:a
    axa 不是简单复制构成,则不输出任何信息
    aaxx 也不是仅仅由简单复制构成,不输出信息。

    请阅读下面的代码,填写缺失的部分(下划线部分)。

    注意:请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
    直接写在题面中不能得分。

    public class DaSai
    {
    public static void findRepeat(String x)
    {
    for(int i=1; i<=x.length()/2; i++)
    {
    String base = x.substring(0,i);
    int p = i;
    for(;;)
    {
    if(p+i>x.length()) break;
    if(x.substring(p,p+i).equals(base)==false) break;
    ________________; // 填空1
    }

    if(______________) // 填空2
    {
    System.out.println(base);
    break;
    }
    }
    }

    public static void main(String[] args)
    {
    findRepeat("IhaveagoodideaIhaveagoodideaIhaveagoodidea");
    }
    }
    */

     1 public class pro19
     2 {
     3     public static void findRepeat(String x)
     4     {
     5         for(int i=1; i<=x.length()/2; i++)
     6         {
     7             String base = x.substring(0,i);
     8             int p = i;//这里保存两个i是下面要用i当做步长去匹配,
     9             for(;;)
    10             {
    11                 if(p+i>x.length()) break;//这个break是匹配上的出口,和第二个填空有关系,
    12                 if(x.substring(p,p+i).equals(base)==false) break;
    13                 p += i;   // 填空1   //上面一行没有break,说明[0...p-1]与[p...p+i-1]匹配上了,下面要和[p+i...p+2i-1]匹配
    14             }
    15             
    16             if(p==x.length())  // 填空2  //上面循环中,p+=i,如果在第一个语句中break了,说明p+i大于x.length(),然后这里想不通了,
    17             {
    18                 System.out.println(base);
    19                 break;
    20             }
    21         }
    22     }
    23     
    24     public static void main(String[] args)
    25     {
    26         findRepeat("IhaveagoodideaIhaveagoodideaIhaveagoodidea");
    27     }
    28 }


    /*
      KMP算法没掌握,做这种题目真吃力,
    */

  • 相关阅读:
    关于request对象的parameter和attribute
    EL表达式知识点总结
    隐藏基于Dialog的MFC的主窗体
    VLD 无法打印堆栈调用情况
    javascript对象属性的命名规则
    javascript中boolean类型和其他类型的转换
    javascript中对象访问自身属性的方式
    java与C++相比增加和缺少的特性--持续更新
    java基础算法(一):最大子序列和问题的多种算法思路
    Jconsole或者VisualVM监控远程主机(阿里云,jdk11或者8)
  • 原文地址:https://www.cnblogs.com/wsxjbky/p/3058996.html
Copyright © 2011-2022 走看看