Решил задачу согласно условиям, перепроверил несколько раз с разными входными данными, в том числе с примером из условия - все работает отлично. Но валидатор не принимает. Вопрос: есть ли у меня ошибки в коде или решение верное но просто не совпадает с "правильным"? Если ошибок нет, тогда я буду двигаться дальше. Внизу с комментариями
package com.javarush.task.task19.task1918;
import java.io.*;
import java.util.ArrayList;
import java.util.regex.*;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
try(BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader = new BufferedReader(new FileReader(console.readLine()))) {
String line = "";
while(reader.ready()){
line = line + reader.readLine();
}
Pattern pattern = Pattern.compile(args[0] + ".*?>");
Matcher matcher = pattern.matcher(line);
ArrayList <String> tags = new ArrayList<>();
ArrayList <Integer> indexes = new ArrayList<>();
int firstIndex = 0;
while(matcher.find()){
int count = 0;
firstIndex = matcher.start()-1;
while(!line.substring(matcher.start()-1, matcher.start()).equals("/")){
indexes.add(matcher.start()-1);
matcher.find();
count++;
}
if(count == 1){
tags.add(line.substring(firstIndex, matcher.end()));
}
else {
ArrayList <String> inner = new ArrayList<>();
int i = 0;
while(count > 1){
inner.add(line.substring(indexes.get(indexes.size()-1-i),matcher.end()));
matcher.find();
count--;
i++;
}
tags.add(line.substring(firstIndex, matcher.end()));
while(i > 0){
tags.add(inner.get(i-1));
i--;
}
}
}
tags.forEach(System.out::println);
}
}
}
Стесняюсь спросить, вы на чем проверяли? И вообще с каким кодом, обрезанным из комментария? Вот у меня вывод буквально такой как в задаче просят, как у вас ниже.
Но должен признать что протестировал лениво, я просто скормил твоему коду многострочный ввод опустив шаг с ридером где ты это собираешь в одну строку.
К слову, а что считается правильными решением?