• 串的重复


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

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

    例如:
    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算法没掌握,做这种题目真吃力,
    */

  • 相关阅读:
    和Mac有关的所有快捷键整理
    Python学习笔记
    在PHP的AWS SDK 的上传功能中指定Content-Type
    Docker 部署 Yapi
    PHP 队列
    数据库设计之一 数据库范式
    docker centos PHP7.2 安装 bcmath数学扩展
    记联调微信支付,调起微信支付之后显示支付验证失败
    记Windows 2012 FTP配置之后 客户端登陆报错
    记一次 MAC 安装 homebrew 报错解决
  • 原文地址:https://www.cnblogs.com/wsxjbky/p/3058996.html
Copyright © 2020-2023  润新知