串的重复

来源:互联网 发布:sqlserver 复制表 编辑:程序博客网 时间:2024/06/08 03:06


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


例如:
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");
}

}

// 判断一个串是否为某个基本串的简单复制构成的// 满分9分// 第一空:4分// p += i 或者:// p = p + i// p = i + p//// 第二空:5分// p == x.length() 或者// x.length() == p// p >= x.length()// !(p<x.length())//// 对每个不同的答案要细心,首先带入程序,看结果是否正确// 再换数据测试public class Test1{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;p += i;}if(p==x.length()){System.out.println(base);break;}}}public static void main(String[] args){findRepeat("IhaveagoodideaIhaveagoodideaIhaveagoodidea");findRepeat("aaa");findRepeat("abab");findRepeat("aah");}}



0 0