Подскажите ,что не так , так и не проходит последний пункт валидации, уже написал несколько различных решений остановился пока на указанном. Тесты все проходит, может какого то момента не учел?!
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.*;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
FileReader reader1 = new FileReader(s);
BufferedReader reader11 =new BufferedReader(reader1);
String capBegin = "<" +args[0];
String capEnd = "</" +args[0]+">";
String strLine="";
String full="";
while ((strLine = reader11.readLine()) != null) {
full+= strLine;
}
reader.close();
reader1.close();
reader11.close();
Pattern p = Pattern.compile(capBegin+"\\W");
Matcher m = p.matcher(full);
ArrayList<Integer> beginIndex = new ArrayList<>();
int index = full.indexOf(capBegin);
beginIndex.add(index);
while (full.substring(index+capBegin.length()).indexOf(capBegin)>=0){
index +=capBegin.length();
m = p.matcher(full.substring(index));
m.find();
index += m.start();
beginIndex.add(index);
}
ArrayList<Integer> endIndex = new ArrayList<>();
index = full.indexOf(capEnd);
endIndex.add(index);
while (full.substring(index+capEnd.length()).indexOf(capEnd)>=0){
index +=capEnd.length();
index += full.substring(index).indexOf(capEnd);
endIndex.add(index);
}
printRez(full,beginIndex,endIndex ,capEnd );
}
public static void printRez(String full, ArrayList<Integer> beginIndex, ArrayList<Integer> endIndex, String capEnd){
while(!beginIndex.isEmpty())
if(beginIndex.size()>1&&beginIndex.get(1)>endIndex.get(0))
{
System.out.println(full.substring(beginIndex.get(0),endIndex.get(0)+capEnd.length()));
beginIndex.remove(0);
endIndex.remove(0);
}else if(beginIndex.size()>1&&beginIndex.get(1)<endIndex.get(0)){
int i=0;
while(beginIndex.get(i)<endIndex.get(0))
{
i++;
}
System.out.println(full.substring(beginIndex.get(0),endIndex.get(i-1)+capEnd.length()));
beginIndex.remove(0);
endIndex.remove(i-1);
}else if(beginIndex.size()==1)
{
System.out.println(full.substring(beginIndex.get(0),endIndex.get(0)+capEnd.length()));
beginIndex.remove(0);
endIndex.remove(0);
}
}
}