Почему не принимает по одному пункту?
Выводится как надо, я даже пробел в конце убрал, все-равно валидатору не нравится. Ничего не понимаю.
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
String[] words;
StringBuilder sb = new StringBuilder();
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader bfr = new BufferedReader(new FileReader(br.readLine()))) {
while(bfr.ready()) {
sb.append(bfr.readLine());
}
}
words = sb.toString().substring(1).split("\\s");
List<String> temp = new ArrayList<>(Arrays.asList(words));
Collections.sort(temp);
List<String> end = new ArrayList<>();
for (int i = 0; i < temp.size(); i++) {
for (int j = i+1; j < temp.size(); j++) {
String iStr = temp.get(i);
String jStr = temp.get(j);
if (String.valueOf(iStr.charAt(iStr.length()-1)).equalsIgnoreCase(String.valueOf(jStr.charAt(0)))) {
end.add(iStr);
end.add(jStr);
temp.remove(iStr);
temp.remove(jStr);
i = temp.size();
j = temp.size();
}
}
}
for (int i = 0; i < temp.size();) {
String eStr = end.get(end.size()-1);
String eCh = String.valueOf(eStr.charAt(eStr.length()-1));
if (eCh.equalsIgnoreCase(String.valueOf(temp.get(i).charAt(0)))) {
end.add(temp.get(i));
temp.remove(temp.get(i));
i = 0;
} else
i++;
}
end.addAll(temp);
for (int i = 0; i < end.size(); i++) {
words[i] = end.get(i);
}
StringBuilder result = getLine(words);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < words.length; i++) {
if (i != words.length-1)
sb.append(words[i] + " ");
else sb.append(words[i]);
}
return sb;
}
}