Вопрос в следующем, есть ли смысл биться с таймаутом при данном алгоритме, либо лучше использовать другой более шустрый алгоритм.
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Составить цепочку слов
Считываем файл
Берем слово закидываем в стирнг билдер например Киев ............Киев Нью-Йорк Амстердам Вена Мельбурн
проверяем по последнему символу и первому символу на сходство и вяжем с цепочкой
Нью йорк Киев Вена Амстердам Мельбурн index of последняя буква слова в билдере
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filePath = reader.readLine();
reader.close();
BufferedReader readFile = new BufferedReader(new FileReader(filePath));
String text = readFile.readLine();
readFile.close();
StringBuilder result = getLine(text);
System.out.println(result.toString().trim());
}
public static StringBuilder getLine(String... words) {
String [] splitedWords = null;
StringBuilder textForLength = new StringBuilder();
for (String s : words) {
splitedWords = s.split(" ");
textForLength.append(s);
}
StringBuilder builder = new StringBuilder(splitedWords[0] + " ");
while (true) {
for (int i = 0; i<splitedWords.length; i++) {
// System.out.println(builder.toString().charAt(builder.length() - 2) + " символ в массиве " + splitedWords[i].toLowerCase().charAt(0));
if (builder.toString().charAt(builder.length() - 2) == splitedWords[i].toLowerCase().charAt(0)) {
builder.append(splitedWords[i] + " ");
}
}
if (textForLength.length() == builder.length() -1) {break;}
}
return builder;
}
}