Для примера из условия - решение есть.
Для такого примера: трам Нет труД муд доМ мандарин март - решение так же есть.
Я в тупике, очень сложно понять что не так.
Подскажите пожалуйста.
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.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String fileName = br.readLine();
ArrayList<String> list = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(fileName));
while (reader.ready()) {
String[] s = reader.readLine().split("\\s");
Collections.addAll(list, s);
}
reader.close();
String[] words = new String[list.size()];
words = list.toArray(words);
System.out.println(getLine(words).toString().trim());
br.close();
}
private static StringBuilder getLine(String... words) {
if (words == null) return new StringBuilder();
if (words.length == 0) return new StringBuilder();
String[] ttArr = new String[words.length];
for (int i = 0; i < words.length; i++) ttArr[i] = words[i];
Permutation ttPer = new Permutation();
List<String> ttList = ttPer.permutate(ttArr);
if (ttList == null) {
return new StringBuilder();
}
boolean ttFlg = true;
for(String ttStr:ttList) {
ttFlg = true;
String[] ttTestArr = ttStr.trim().split("\\s");
for (int i = 0; i < ttTestArr.length - 1; i++) {
String ttEnd = ttTestArr[i].substring(ttTestArr[i].length() - 1).toUpperCase();
String ttStart = ttTestArr[i + 1].substring(0, 1).toUpperCase();
if (!ttEnd.equals(ttStart)) ttFlg = false;
}
if (ttFlg) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ttArr.length; i++) {
sb.append(ttTestArr[i] + " ");
}
return sb;
}
}
return new StringBuilder();
}
}