Такую последовательность (трам Нет труД муд доМ мандарин март)
вводил, и знаю что вывод у меня
(Нет труД доМ мандарин март муд трам),
И ЧТО ОН НЕ ВЕРНЫЙ, то есть не самая длинная последовательность, помогите оптимизировать код!!!!
package com.javarush.task.task22.task2209;
import java.io.BufferedReader;
import java.io.FileReader;
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 {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String filename = reader.readLine();
reader.close();
String data;
try (BufferedReader reader1 = new BufferedReader(new FileReader(filename))) {
data = "";
while (reader1.ready()) {
data = reader1.readLine();
}
}
String[]words = data.split(" ");
StringBuilder result = getLine(words);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words)
{
if (words == null || words.length == 0) {
return new StringBuilder();
}
if(!words[0].isEmpty() && words.length == 1) return new StringBuilder(words[0]);
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, words);
Collections.sort(list);
for (int j=0 ; j<list.size();j++) {
for (int i = j+1; i < list.size(); i++) {
if ( list.get(j).toLowerCase().charAt(list.get(j).length()-1) == list.get(i).toLowerCase().charAt(0)) {
String s = list.get(j+1);
list.set(j+1, list.get(i));
list.set(i, s);
}
}
}
StringBuilder result = new StringBuilder();
for (String x:list){
result.append(x + " ");
}
return result;
}
}
А еще у тебя выводится один лишний "пустой" элемент в конце.