Добрый день. Какие слова не подставляю, вроде всё соответствует условию, а валидатор пишет не соответствует. Подскажите пожалуйста кто-нибудь, что ему от меня нужно)))
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
reader = new BufferedReader(new FileReader(file));
ArrayList<String> list = new ArrayList<>();
while (reader.ready()){
String[] strings = reader.readLine().split(" ");
list.addAll(Arrays.asList(strings));
}
reader.close();
StringBuilder result = getLine(list.toArray(new String[0]));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
StringBuilder result = new StringBuilder();
ArrayList<ArrayList<String>> lists = new ArrayList<>();
ArrayList<String> list = new ArrayList<>(Arrays.asList(words));
if (list.size()>0) {
for (int i = 0; i < list.size(); i++) {
lists.add(new ArrayList<>());
lists.get(i).add(list.get(i));
}
for (int k = 1; k < list.size(); k++) {
for (int i = 0; i < lists.size(); i++) {
ArrayList<String> temp = lists.get(i);
String s = temp.get(temp.size() - 1);
String lastChar = String.valueOf(s.charAt(s.length() - 1));
for (int j = 0; j < list.size(); j++) {
String s1 = list.get(j);
if (s1.toLowerCase(Locale.ROOT).startsWith(lastChar)) {
if (!temp.contains(list.get(j))) {
temp.add(list.get(j));
break;
}
}
}
}
}
int listWithMaxLength = 0;
int maxListWidth = 0;
for (int i = 0; i < lists.size(); i++) {
if (maxListWidth<lists.get(i).size()){
maxListWidth=lists.get(i).size();
listWithMaxLength = i;
}
}
for (String s:
list) {
if (!lists.get(listWithMaxLength).contains(s))
lists.get(listWithMaxLength).add(s);
}
for (String s:
lists.get(listWithMaxLength)) {
if (result.length()>0) result.append(" ");
result.append(s);
}
}
return result;
}
}