Ich habe die folgende Problemstellung
PS: Bei einer Zeichenkette "str" und einer nicht leeren Teilzeichenkette "sub" wird "rekursiv" berechnet, ob mindestens "N" Kopien von "sub" irgendwo in der "Zeichenkette" vorkommen, möglicherweise mit "Überschneidungen". N wird nicht-negativ sein.
Example are as shown below
strCopies("catcowcat", "cat", 2) true
strCopies("catcowcat", "cow", 2) false
strCopies("catcowcat", "cow", 1) true
strCopies("iiijjj", "ii", 2) true
Ich habe den Code wie unten gezeigt geschrieben (ohne Rekursion) und funktioniert gut für einige Testfälle, außer für andere, die als FAIL markiert sind.
:::Der Code lautet wie folgt:::
public boolean strCopies(String str, String sub, int n) {
int len = sub.length();
int result=0;
if(len>0){
int start = str.indexOf(sub);
while(start !=-1){
result++;
start = str.indexOf(sub,start+len);
}
}
if(result==n){
return true;
}else return false;
}
Der obige Code wird wie folgt ausgeführt (fett gedruckt sind fehlgeschlagene Testfälle)
Expected This Run
strCopies("catcowcat", "cat", 2) true true OK
strCopies("catcowcat", "cow", 2) false false OK
strCopies("catcowcat", "cow", 1) true true OK
strCopies("iiijjj", "ii", 2) true false FAIL
strCopies("iiiiij", "iii", 3) true false FAIL
strCopies("ijiiiiij", "iiii", 2) true false FAIL
Könnten Sie überprüfen und lassen Sie mich wissen, was mit dem Code für FAIL TEST CASES falsch ist? Im nicht in der Lage, die überlappenden Szenarien zu berücksichtigen.