Проверял с условиями из задачи и с трам Нет труД муд доМ мандарин март. Вывод правильный. Есть какойто порядок слов при проверке, который не проходит
package com.javarush.task.task22.task2209;
import java.io.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws IOException {
//...
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) );
String file = reader.readLine();
reader.close();
BufferedReader reader1 = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.forName("Windows-1251")));
String str = reader1.readLine().replaceAll("\uFEFF", "");
String[] s = str.split(" ");
StringBuilder result = getLine(s);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
ArrayList<Word> list = new ArrayList<>();
ArrayList<Word> res = new ArrayList<>();
for (String s: words) {
list.add(new Word(s, s.substring(0,1), s.substring(s.length()-1, s.length())));
}
StringBuilder stringBuilder=null;
while (res.size()!=list.size()) {
stringBuilder = new StringBuilder();
res.clear();
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
Word A = list.get(i), B = list.get(j);
if (A != null && B != null && !res.contains(A) && !res.contains(B)) {
if (res.size()==0) {
if (A.end.toLowerCase().equals(B.beg.toLowerCase())) {
stringBuilder.append(A.word);
res.add(A);
stringBuilder.append(" ");
stringBuilder.append(B.word);
stringBuilder.append(" ");
res.add(B);}
} else { if (res.get(res.size()-1).end.toLowerCase().equals(B.beg.toLowerCase())) {
stringBuilder.append(B.word);
res.add(B);
stringBuilder.append(" ");
}
}
}
}
}
Shakemas(list);
}
return stringBuilder;
}
public static ArrayList<Word> Shakemas(ArrayList<Word> list){
Word temp = list.get(0);
list.remove(0);
list.add(temp);
return list;
}
public static class Word {
String beg;
String end;
String word;
public Word(String word, String beg, String end) {
this.word = word;
this.beg = beg;
this.end = end;
}
}
}