Во время валидации приходит сообщение о том что программа работала слишком долго. В моем тестовом файле всего два десятка слов, и все происходит мгновенно, да и требований к скорости обработки никаких нет. Добавил 44 строчку для ускорения - не помогло. Возможно я использую слишком ресурсоемкие методы? Кто что посоветует, коллеги?
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
/*
Составить цепочку слов
C:\ZZZ\file.txt
*/
public class Solution {
public static void main(String[] args) throws IOException {
//String file1 = "C:\\ZZZ\\file.txt";
//...
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
String file = console.readLine();
console.close();
BufferedReader reader = new BufferedReader(new FileReader(file));
StringBuilder wordsInLine = new StringBuilder();
while (reader.ready()) {
wordsInLine.append(reader.readLine()).append(" ");
}
reader.close();
System.out.println(wordsInLine);
StringBuilder result = getLine(wordsInLine.toString().trim().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words.length == 0) return null;
StringBuilder result = new StringBuilder();
List<Integer> indexes = new ArrayList<>();
result.append(words[0]);
indexes.add(0);
char[] chars = words[0].toLowerCase().toCharArray();
char key = chars[chars.length - 1];
while (indexes.size() != words.length) {
for (int i = 1; i < words.length; i++) {
if (indexes.contains(i)) continue;
chars = words[i].toLowerCase().toCharArray();
if (chars[0] == key ) {
key = chars[chars.length - 1];
indexes.add(i);
result.append(" ").append(words[i]);
i = 1;
}
}
}
return result;
}
}