Валидация сваливается в вечный цикл.
Если я правильно понимаю, валидатор прогоняет тестовый набор слов, отличный от примера из условия, и в этом наборе есть какое-то ветвление, которое мой простенький алгоритм не учитывает. Силюсь придумать правильный тест, но не выходит. Подскажете?
Вот что у меня в тестовом файле:
Киев Нью-Йорк амстердам венА МельбурН
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
String filePath = consoleReader.readLine();
//String filePath = "/Users/master/Development/test/file.txt";
List<String> list = new ArrayList<>();
try (BufferedReader fileReader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = fileReader.readLine()) != null) {
list.addAll(Arrays.asList(line.split("\\s")));
}
}
StringBuilder result = getLine(list.toArray(new String[list.size()]));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
int wl = words.length;
StringBuilder result = new StringBuilder();
if (words.length == 0) return result;
result.append(words[0]);
Queue<String> queue = new LinkedList<>(Arrays.asList(words).subList(1, wl));
while (!queue.isEmpty()) {
String word = queue.poll();
if (word.toLowerCase().charAt(0) == Character.toLowerCase(result.charAt(result.length() - 1))) {
result.append(" ").append(word);
} else {
queue.add(word);
}
}
return result;
}
}