Рекурсивно вычислить самую большую подстроку, которая начинается и заканчивается на sub, и вернуть ее длину.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Рекурсивно вычислить самую большую подстроку, которая начинается и заканчивается на sub, и вернуть ее длину.

Сообщение Anonymous »

Задача: по заданной строке и непустой подстроке sub рекурсивно вычислить наибольшую подстроку, которая начинается и заканчивается на sub, и вернуть ее длину.
Примеры: >

Код: Выделить всё

strDist("catcowcat", "cat") → 9
strDist("catcowcat", "cow") → 3
strDist("cccatcowcatxx", "cat") → 9
Можете ли вы посмотреть мой код и сказать, в чем проблема?

Код: Выделить всё

public int strDist(String str, String sub) {
if (str.length() < sub.length())
return 0;

if (str.length() == sub.length() && str.equals(sub))
return str.length();

if (str.length() < 2) {
if (str.contains(sub)) {
return 1;
}
return 0;
}

if (str.length() == 2) {
if (sub.length() == 2 && str.equals(sub))
return 2;

if (str.contains(sub))
return 1;

return 0;
}

if (str.length() > 2) {
if (str.startsWith(sub) && str.endsWith(sub)) {
return str.length();
}

if (str.substring(0, sub.length()).equals(sub)) {
strDist(str.substring(0, str.length() - 2), sub);
}

if (str.substring(str.length() - sub.length(), str.length() - 1).equals(sub))
strDist(str.substring(1, str.length() - 1), sub);
}
return strDist(str.substring(1, str.length() - 1), sub);
}
это не работает в случае strDist("hiHellohihihi", "hih") → 5
и возвращает ноль.

Подробнее здесь: https://stackoverflow.com/questions/401 ... ub-and-ret
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»