Собственно говоря собрал вот такого монстра ...ибо Jsoup программа не пропускала....при использовании примера вывод:
Turanga Leela
Turanga Leela
Super
girl
различия только в очередности вывода ....но и тут валидатор не соглашается.......((((
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.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws Exception{
String fileName;
try(BufferedReader bf = new BufferedReader(new InputStreamReader(System.in))){
fileName = bf.readLine();
}
StringBuilder sb = new StringBuilder();
try(BufferedReader bf = new BufferedReader(new FileReader(fileName))){
while (bf.ready()){
sb.append(bf.readLine());
}
}
String result = sb.toString();
String open = "<"+ args[0];
String close = "</" + args[0] + ">";
ArrayList<Integer> openTag = new ArrayList<>();
ArrayList<Integer> closeTag = new ArrayList<>();
Pattern openPat = Pattern.compile(open);
Pattern closePat = Pattern.compile(close);
Matcher openMat = openPat.matcher(result);
while(openMat.find()){
openTag.add(openMat.start());
}
Matcher closeMat = closePat.matcher(result);
while(closeMat.find()){
closeTag.add(closeMat.end());
}
for(int i = 0; i < openTag.size(); ){
int j = i;
int count = 0;
for(int d = 1; d + i < openTag.size(); d++){
if(openTag.get(i+d) < closeTag.get(i)){
count++;
}
}
while(count>=0){
System.out.println(result.substring(openTag.get(i+count), closeTag.get(j)));
count--;
j++;
}
i=j;
}
}
}