Доброго времени суток.
При попытке отправить решение задачи - с сервера приходит сообщение "Программа работала слишком долго и была закрыта".
Задачу проверял в IDEA - работает нормально. Подскажите пожалуйста - что я не учел.
package com.javarush.task.task19.task1916;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
Отслеживаем изменения
*/
public class Solution {
public static List<LineItem> lines = new ArrayList<LineItem>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fileReader1 = new BufferedReader(new FileReader(reader.readLine()));
BufferedReader fileReader2 = new BufferedReader(new FileReader(reader.readLine()));
reader.close();
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
String s = null;
while((s = fileReader1.readLine()) != null) list1.add(s);
fileReader1.close();
while((s = fileReader2.readLine()) != null) list2.add(s);
fileReader2.close();
for(int i = 0, j = 0; i < list1.size() || j < list2.size(); ) {
String f1 = list1.get(i);
String f2 = list2.get(j);
if(f1.equals(f2)) {
lines.add(new LineItem(Type.SAME, f1));
i = i + 1 < list1.size() ? i + 1 : i;
j = j + 1 < list1.size() ? j + 1 : j;
} else if(i + 1 < list1.size() && list1.get(i + 1).equals(f2)) {
lines.add(new LineItem(Type.REMOVED, f1));
i++;
} else {
lines.add(new LineItem(Type.ADDED, f2));
if(j + 1 < list2.size()) j++;
else break;
}
}
}
public static enum Type {
ADDED, //добавлена новая строка
REMOVED, //удалена строка
SAME //без изменений
}
public static class LineItem {
public Type type;
public String line;
public LineItem(Type type, String line) {
this.type = type;
this.line = line;
}
}
}