代码的目标:判断一个串是否为某个基本串的简单复制构成的。
例如:
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");
}
}