public class Solution {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<String>();
strings.add("роза");
strings.add("лоза");
strings.add("лира");
strings = fix(strings);
for (String string : strings) {
System.out.println(string);
}
}
public static ArrayList<String> fix(ArrayList<String> strings) {
for (int i = 0; i < strings.size();){
if (strings.get(i).contains("л") && !strings.get(i).contains("р")){
strings.add(i,strings.get(i));
i++;
}
if (strings.get(i).contains("р") && !strings.get(i).contains("л")){
strings.remove(i);
}
else i++;
}
return strings;
}
}
Nicha
26 уровень
Почему задача прошла? Компилятор выдаёт ответ в другой последовательности "лоза,лоза,лира" , а должно быть "лира, лоза,лоза" . Я целый час сидел, не мог понять как верно решить. Проверил, что покажет валидатор, а задача решилась.....
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
26 июля 2020, 15:56
здесь ты добавляешь элемент в "середину" списка. после этого твой список будет выглядеть так:
роза
лоза
лоза
лира
для того, чтобы было:
лира
лоза
лоза
тебе надо было в случае нахождения буквы Л и не нахождения буквы Р
добавить его 2 раза в конец списка
удалить тот элемент, что ты проверял.
PS. последнее время через одного вижу такую конструкцию добавления в список. i параметр нужен только тогда, когда ты хочешь добавить список элемент под конкретным индексом. остальные же элементы сместятся на один "вправо"
+3
Nicha
27 июля 2020, 11:10
Спасибо большое! Теперь полностью понял, как всё это сработало!
Я думал, что нужно сохранить последовательность слов, поэтому добавлял на тоже место в списке.
0