Запутался с индексами!
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 i = 0; i < list.size();i++){
if (list.get(i).contains("р") && list.get(i).contains("л")){
i++;
}
else if (list.get(i).contains("р")){
list.remove(i);
i--;
}
else if (list.get(i).contains("л")){
list.add(list.get(i));
}
}
return list;
}
}
Если можно , ближе к истине!
Не нужно пожалуйста ответов типо : подумай что происходит с индексом тут!
Я уже думал... что происходит там. И долго думал! Поэтому я обратился за помощью.
Спасибо за понимание.
Nordis
28 уровень
Запутался с индексами.
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
NordisExpert
3 февраля 2019, 16:16
Я понял что size уменьшается автоматом , при использовании метода remove.
ArrayList<String> gap = new ArrayList<>();
for (int i = 0; i < list.size();){
if (list.get(i).contains("р") && list.get(i).contains("л")){
i++;
}
else if (list.get(i).contains("р")){
list.remove(i);
}
else if (list.get(i).contains("л")){
list.add(i+1,list.get(i)); <--- тут я писал i++ вместо i+1. из за этого работало не корректно!
i+=2; кто знает почему так происходит
}else i++; подскажите.
}
return list;
Вот так всё норм вышло.
0
NordisExpert
3 февраля 2019, 15:43
Когда происходит удаление элемента методом remove. list.size автоматом уменьшаеться на 1 ?
0