Ниже приведена формулировка проблемы:
PS: Для заданной строки и непустой подстроки sub, рекурсивно вычислить наибольшую подстроку, которая начинается и заканчивается sub и возвращает ее длину.
Examples:
strDist("catcowcat", "cat") → 9
strDist("catcowcat", "cow") → 3
strDist("cccatcowcatxx", "cat") → 9
Ниже приведен мой код: (без рекурсии) // поскольку мне было труднореализовать с рекурсией.
public int strDist(String str, String sub){
int idx = 0;
int max;
if (str.isEmpty()) max = 0;
else max=1;
while ((idx = str.indexOf(sub, idx)) != -1){
int previous=str.indexOf(sub, idx);
max = Math.max(max,previous);
idx++;
}
return max;
}
Он работает для немногих, как показано ниже, но возвращает FAIL для других.
Expected This Run
strDist("catcowcat", "cat") → 9 6 FAIL
strDist("catcowcat", "cow") → 3 3 OK
strDist("cccatcowcatxx", "cat") → 9 8 FAIL
strDist("abccatcowcatcatxyz", "cat") → 12 12 OK
strDist("xyx", "x") → 3 2 FAIL
strDist("xyx", "y") → 1 1 OK
strDist("xyx", "z") → 0 1 FAIL
strDist("z", "z") → 1 1 OK
strDist("x", "z") → 0 1 FAIL
strDist("", "z") → 0 0 OK
strDist("hiHellohihihi", "hi") → 13 11 FAIL
strDist("hiHellohihihi", "hih") → 5 9 FAIL
strDist("hiHellohihihi", "o") → 1 6 FAIL
strDist("hiHellohihihi", "ll") → 2 4 FAIL
Не могли бы вы сказать, что не так с кодом и как вернуть самую большую подстроку, которая начинается и заканчиваетсяс суб с соответствующей длиной.