Не соответствие результатов на сайте (Warmup-1 > delDel) и в IntelliJ IDEA
День добрый. Только начинаю разбираться в Java и тут такая непонятка. На многим известном сайте тренировочных примеров есть задачка
Given a string, if the string "del" appears starting at index 1, return a string where that "del" has been deleted. Otherwise, return the string unchanged.
Я недолго думая пишу
public String delDel(String str) {
if (str.contains("del")) {
return str.replaceAll("del", "");
} else return str;
}
При этом получая странные результаты, а именно:
- delDel("abcdel") → "abcdel" "abc"(вот тут не допечатывает, я так понимаю, двойную кавычку) X
delDel("del") → "del" ""(и тут также не допечатывает, я так понимаю, двойную кавычку) X
- delDel("aadelbb") → "aadelbb" "aabb"(тут вообще теряется bb") X
При всем этом если забиваю все в IntelliJ IDEA первая непонятка выдает нужную строку, а вторая не теряет bb"
В идею забивал для наглядности (меняя строку str).
String str = "aadelbb";
if (str.contains("del")) {
System.out.println(str.replaceAll("del", ""));
} else System.out.println(str);
Заранее спасибо за ваше мнение.
Ответы (2 шт):
Сюдя по заданию метод должен быть реализован немного по-другому:
public String delDel(String str) {
if (str.indexOf("del", 1) == 1){
return str.replaceFirst("del", "");
}
return str;
}
Вы неправильно поняли задание. Нужно заменить строку del тогда и только тогда когда она начинается на индексе 1 входной строки, т.е. для входной строки "abcdel" метод должен вернуть входную строку без изменений.
Ваш же метод заменяет все вхождения del где бы они не находились. Из-за этого и возникают ошибки.
Из-за непонимания условия, Вы также неправильно поняли сообщения о непройденных тестах:
delDel("abcdel") → "abcdel" "abc"(вот тут не допечатывает, я так понимаю, двойную кавычку) X
Нет, здесь говорится, что метод должен был вернуть "abcdel", а вернул "abc".
Выделенная красным кавычка означает, что в конце строки должно было быть что-то еще ("del" после "abc"). Сайт пытается помочь подсвечивая разницу между ожидаемым и полученным результатом.
delDel("aadelbb") → "aadelbb" "aabb"(тут вообще теряется bb") X
Аналогично, "bb" подсвечивается потому, что в строке здесь ошибка: вместо "bb" должно было быть "delbb".