Я не понимаю что значит пустые параметры.
Пы.Сы. То что в моем решении, это просто последний вариант который я попробовал.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
import java.util.stream.Stream;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) {
//...
StringBuilder line = new StringBuilder();
try (BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
BufferedReader reader = new BufferedReader(new FileReader(console.readLine()))) {
while (reader.ready()) {
String fileLine = reader.readLine() + "";
line.append(fileLine);
}
} catch (IOException e) {
e.printStackTrace();
}
StringBuilder result = getLine(line.toString().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
if (words.length == 1 && words[0].trim().isEmpty()){
return new StringBuilder("");
}
StringBuilder result = new StringBuilder();
result.append(words[0]);
HashSet<String> wordsSet = new HashSet<>(Arrays.asList(words));
wordsSet.remove(words[0]);
HashSet<String> wordsSetCopy = new HashSet<>();
for (String word : wordsSet) {
wordsSetCopy.add(word);
}
while (!wordsSetCopy.isEmpty()) {
for (String word : wordsSet) {
if (!wordsSetCopy.contains(word)) {
continue;
}
char lastResultChar = result.charAt(result.length() - 1);
char firstResultChar = result.charAt(0);
char firstWordChar = word.charAt(0);
char lastWordChar = word.charAt(word.length() - 1);
if (String.valueOf(firstWordChar).equalsIgnoreCase(String.valueOf(lastResultChar))) {
result.append(" " + word);
wordsSetCopy.remove(word);
} else if (String.valueOf(lastWordChar).equalsIgnoreCase(String.valueOf(firstResultChar))){
result.insert(0, word + " ");
wordsSetCopy.remove(word);
}
}
}
return result;
}
}