1. Создай список слов, заполни его самостоятельно.
2. Метод fix должен:
2.1. удалять из списка строк все слова, содержащие букву «р»
2.2. удваивать все слова содержащие букву «л».
2.3. если слово содержит и букву «р» и букву «л», то оставить это слово без изменений.
2.4. с другими словами ничего не делать.
Пример:
роза
лира
лоза
Выходные данные:
лира
лоза
лоза
Требования:
1. Программа не должна считывать данные с клавиатуры.
2. Метод fix должен удалять из списка строк все слова, содержащие букву «р». Исключение: слова содержащие и букву «р» и букву «л» - их нужно оставить.
3. Метод fix должен удваивать слова, содержащие букву «л» (добавлять еще один элемент с этим словом). Исключение: слова содержащие и букву «л» и букву «р» - их не нужно удваивать.
4. Метод fix не должен ничего делать со словами, содержащими и букву «л» и букву «р».
5. Метод fix не должен ничего делать со словами, которые не содержат ни букву «л», ни букву «р».
Я пробовал в циклах добавлять в блок операторов после условий операторов if list.size()-- (или list.size()++ ) в связи с удалением/добавлением элемента, но это не проходит. Как мне уведомить циклы об изменении размера массива?
public class Solution {
public static void main(String[] args) throws Exception {
ArrayList<String> list = new ArrayList<String>();
list.add("роза"); //0
list.add("лоза"); //1
list.add("лира"); //2
list = fix(list);
for (String s : list) {
System.out.println(s);}
}
public static ArrayList<String> fix(ArrayList<String> list) {
for (int k=0; k<list.size(); k++){
for (int m=0; m<list.get(k).length(); m++){
if ((list.get(k).charAt(m) == 'р') && (list.get(k).charAt(m) != 'л')) {
list.remove(list.get(k)); }
}
}
for (int i=0; i<list.size(); i++){
for (int j=0; j<list.get(i).length(); j++){
if ((list.get(i).charAt(j) == 'л') && (list.get(i).charAt(j) != 'р')) {list.add(list.get(i));}
}
}
return list;
}
}