Либо долго работает, либо последние два пункта задания. Подскажите точнее, пожалуйста, в каких строках что исправить.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) {
StringBuilder stb = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader buff = new BufferedReader(new FileReader(reader.readLine()))) {
String str;
while ((str = buff.readLine()) != null) {
stb.append(str).append(" ");
}
} catch (IOException e) {
e.printStackTrace();
}
StringBuilder result = getLine(stb.toString().trim().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words == null || words.length == 0) return new StringBuilder("");
ArrayList<String> list = new ArrayList<String>();
Collections.addAll(list, words);
//Collections.sort(list);
for (String r: list) { System.out.println(r); }
StringBuilder strBuild = new StringBuilder(list.get(0));
list.remove(0);
int count = list.size()+1;
while (count > 0 ){
String strBuildFirst = strBuild.toString().substring(0,1);
String strBuildEnd = strBuild.toString().substring(strBuild.length()-1);
String s = list.get(0);
String sFirst = s.substring(0,1);
String sEnd = s.substring(s.length()-1);
if (strBuildEnd.equalsIgnoreCase(sFirst)) {
strBuild.append(" ").append(s);
list.remove(0);
--count;
}
else if (strBuildFirst.equalsIgnoreCase(sEnd)) {
strBuild.insert(0,s+" ");
list.remove(0);
--count;
}
else if (!strBuildEnd.equalsIgnoreCase(sFirst) && !strBuildFirst.equalsIgnoreCase(sEnd)) {
Collections.swap(list, 0, list.size() - 1);
--count;
}
}
return strBuild;
}
}