1. Если добавить в strings еще одно слово с буквой "л", то получается ошибка IndexOutOfBoundsException(), почему? Другие слова добавлять получается.
2. Мое решение не проходит по пункту:
- Метод fix должен удалять из списка строк все слова, содержащие букву "р". Исключение: слова содержащие и букву "р" и букву "л" - их нужно оставить.
3. Слово "далеко" не дублируется...
Output:
лоза
лоза
лира
клозет
клозет
Вася
оп ап
оп ап
далеко
жук
филармония
package com.javarush.task.jdk13.task07.task0716;
import java.util.ArrayList;
/*
Р или Л
*/
public class Solution {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<String>();
strings.add("роза");
strings.add("лоза");
strings.add("лира");
strings.add("пора");
strings.add("клозет");
strings.add("Вася");
strings.add("оп ап");
strings.add("оп ап");
strings.add("далеко");
strings.add("Жора");
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(); i++) {
// если слово содержит и букву "р", и букву "л", то оставить это слово без изменений.
if (strings.get(i).contains("р") && strings.get(i).contains("л")) {
continue;
}
// удалять из списка строк все слова, содержащие букву "р".
else if (strings.get(i).contains("р") && !strings.get(i).contains("л")) {
strings.remove(i);
}
}
ArrayList<String> result = new ArrayList<String>(strings);
for (int i = 0; i < result.size(); i++) {
if (result.get(i).contains("р") && result.get(i).contains("л")) {
continue;
}
else if (result.get(i).contains("л") && !strings.get(i).contains("р")) {
result.add(i, result.get(i));
i++;
}
}
return result;
}
}