Не соответствие результатов на сайте (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;
}

При этом получая странные результаты, а именно:

  1. delDel("abcdel") → "abcdel" "abc"(вот тут не допечатывает, я так понимаю, двойную кавычку) X

delDel("del") → "del" ""(и тут также не допечатывает, я так понимаю, двойную кавычку) X

  1. 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 шт):

Автор решения: Alexandr

Сюдя по заданию метод должен быть реализован немного по-другому:

public String delDel(String str) {
    if (str.indexOf("del", 1) == 1){
        return str.replaceFirst("del", "");
    }
    return str;
}
→ Ссылка
Автор решения: default locale

Вы неправильно поняли задание. Нужно заменить строку del тогда и только тогда когда она начинается на индексе 1 входной строки, т.е. для входной строки "abcdel" метод должен вернуть входную строку без изменений.

Ваш же метод заменяет все вхождения del где бы они не находились. Из-за этого и возникают ошибки.

Из-за непонимания условия, Вы также неправильно поняли сообщения о непройденных тестах:

delDel("abcdel") → "abcdel" "abc"(вот тут не допечатывает, я так понимаю, двойную кавычку) X

Нет, здесь говорится, что метод должен был вернуть "abcdel", а вернул "abc".

Выделенная красным кавычка означает, что в конце строки должно было быть что-то еще ("del" после "abc"). Сайт пытается помочь подсвечивая разницу между ожидаемым и полученным результатом.

delDel("aadelbb") → "aadelbb" "aabb"(тут вообще теряется bb") X

Аналогично, "bb" подсвечивается потому, что в строке здесь ошибка: вместо "bb" должно было быть "delbb".

→ Ссылка