Здравствуйте!
Не могу подобрать тестовые данные, чтобы отловить ошибку... На тех данных, что проверяла, отрабатывает корректно.
Подскажите, пожалуйста, что упускаю в решений?
Спасибо!
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder stringBuilder = new StringBuilder();
String tag = args[0];
String fileName = bufferedReader.readLine();
bufferedReader.close();
BufferedReader reader = new BufferedReader(new FileReader(fileName));
while (reader.ready()) {
stringBuilder.append(reader.readLine());
stringBuilder.append(" ");
}
String content = stringBuilder.toString().trim();
reader.close();
Map<Integer, Integer> treeMap = new TreeMap<>();
Matcher start = Pattern.compile("<" + tag + ".*?").matcher(content);
while (start.find()) {
treeMap.put(start.start(), 0);
}
Matcher end = Pattern.compile("</"+ tag +">").matcher(content);
while (end.find()) {
treeMap.put(end.start(), 1);
}
ArrayDeque<Integer> list = new ArrayDeque<>();
Map<Integer, Integer> indexes = new HashMap<>();
for(Map.Entry<Integer, Integer> pair : treeMap.entrySet()) {
if(pair.getValue().equals(0)) {
list.add(pair.getKey());
} if (pair.getValue().equals(1)) {
indexes.put(list.pollLast(), pair.getKey() + tag.length() + 3);
}
}
for(Map.Entry<Integer, Integer> pair : indexes.entrySet()) {
System.out.println(content.substring(pair.getKey(), pair.getValue()));
}
}
}