Подскажите пожалуйста, что не нравится валидатору :( Условия задачи выполняются.
Выводит всевозможные варианты цепочек.
package com.javarush.task.task22.task2209;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String fileName = buffer.readLine();
buffer.close();
// /Users/pr1zrak/Dropbox/JavaRushTasks/3.JavaMultithreading/src/com/javarush/task/task22/task2207/tmp.txt
// E:\dropbox\Dropbox\JavaRushTasks\3.JavaMultithreading\src\com\javarush\task\task22\task2209\tmp.txt
// FileReader file = new FileReader("E:\\dropbox\\Dropbox\\JavaRushTasks\\3.JavaMultithreading\\src\\com\\javarush\\task\\task22\\task2209\\tmp.txt");
FileReader file = new FileReader(fileName);
StringBuilder str = new StringBuilder();
while (file.ready()) {
str.append((char) file.read());
}
System.out.println(str);
//Киев Нью-Йорк Амстердам Вена Мельбурн
//Амстердам Мельбурн Нью-Йорк Киев Вена
StringBuilder result = getLine(str.toString().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
String[] arr = words;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++)
{
ArrayList<String> cities;
ArrayList<String> list = new ArrayList<String>(Arrays.asList(arr));
list.remove(arr[i]);
ArrayList<String> mm = new ArrayList<>();
mm.add(arr[i]);
cities = (findChain(arr[i], list, mm));
List<String> deduped = cities.stream().distinct().collect(Collectors.toList());
sb = new StringBuilder(String.join(" ", deduped));
//System.out.println(sb);
}
return sb;
}
public static ArrayList<String> findChain(String firstCity, ArrayList<String> cityList, ArrayList<String> result)
{
String findedCity = null;
for (int i = 0; i < cityList.size(); i++)
{
if (String.valueOf(firstCity.charAt(firstCity.length() - 1)).toLowerCase().equals(String.valueOf(cityList.get(i).charAt(0)).toLowerCase()))
{
//result.add(firstCity);
findedCity = cityList.get(i);
cityList.remove(i);
result.add(findedCity);
//result.clear();;
result.addAll(findChain(findedCity, cityList, result));
}
}
return result; //ArrayList with cities chain
}
}