我正在为java进行编码蝙蝠练习,我遇到了一个问题,即Eclipse返回正确的值,而编码蝙蝠环境则没有。我正在处理的问题是:
给出了一个字符串和一个非空的子字符串子,如果至少n副本出现在某个地方的字符串中,则可能带有重叠。n将是非负的。
strCopies("catcowcat", "cat", 2) → true
strCopies("catcowcat", "cow", 2) → false
strCopies("catcowcat", "cow", 1) → true
对于case strcopies(" iiijjj"," i",3),我的代码在编码蝙蝠中运行时会在eclipse中返回false,它返回了true。在所有其他情况下,我的代码在日食中返回与编码BAT相同的值。由于我已经在编码蝙蝠环境中经历了莫名其妙的行为,这可能是一个错误吗?
我致电该方法:
System.out.println(p.strCopies("iiijjj", "i", 3));
我的代码是:
int count;
public boolean strCopies(String str, String sub, int n) {
if (str.indexOf(sub) != -1) {
count++;
strCopies(str.substring(str.indexOf(sub)+1), sub, n);
}
if (count == n) {
return true;
}
else {
count = 0;
return false;
}
}
这是一个可能的解决方案
public boolean strCopies(String str, String sub, int n) {
if(str.isEmpty() && n > 0 ) return false;
if(str.isEmpty() && n == 0 ) return true;
if( str.length() >= sub.length() &&
str.substring(0,sub.length()).equals(sub) ){
return strCopies( str.substring(1) , sub , n-1 );
}
return strCopies(str.substring(1) , sub , n);
}