Помогите пожалуйста. Не принимает последнее условие (Вывод на экран должен соответствовать условию задачи.)
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedReader fileReader = new BufferedReader (new InputStreamReader ( new FileInputStream(reader.readLine().replaceAll(" ", "")),"UTF-8"))){
StringBuilder text = new StringBuilder();
while (fileReader.ready()) {
String city = fileReader.readLine();
text.append(city + " ");
}
String[] array = text.toString().split("\\s+");
//...
StringBuilder result = getLine(array);
System.out.println(result.toString());
}
}
public static StringBuilder getLine(String... words) {
StringBuilder sb = new StringBuilder();
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
if ( words.length>0) {
for (String s : words) {
if (!s.equals(null)) {
list1.add(s);
}
}
Collections.sort(list1);
list2.add(list1.get(0));
int count =0;
for (int i = 1; i < list1.size(); i++) {
String l1 = list1.get(i);
String l2 = list2.get(count);
if (l2.substring(l2.length()-1).equalsIgnoreCase(l1.substring(0,1))&& !list2.contains(l1)) {
list2.add(l1);
list1.remove(l1);
count++;
i=0;
}
}
for (String s : list2) {
sb.append(s+" ");
}
for (String t : list1) {
if (!list2.contains(t)) {
sb.append(t + " ");
}
}
sb.deleteCharAt(sb.lastIndexOf(" "));
} else {
return sb;
}
return sb;
}
}