Очень трудна и непонятна....
И можете подсказать, как приходят параметры в метод, если он принимает (String.. word)?
Логика такая, что я запускаю второй цикл столько раз, сколько слов в массиве, и ищу совпадение.
При совпадении добавляю номер слова в Set, чтоб отличать слова которые уже использовались от остальных.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static String getLast(String word) throws Exception {
String[] ABC = word.split("");
return ABC[ABC.length-1];
}
public static String getFirst(String word) throws Exception {
String[] ABC = word.split("");
return ABC[0];
}
public static String getStringBuilderLast(StringBuilder one) {
return one.substring(one.length()-2);
}
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String address = reader.readLine();
reader.close();
BufferedReader file = new BufferedReader(new FileReader(address));
String finall="";
String line;
while((line=file.readLine())!=null) {
finall+=line+" ";
}
//...
StringBuilder result = getLine(finall.trim().split(" "));
System.out.println(result.toString());
}
public static StringBuilder getLine(String[] words) throws Exception {
if (words==null ) return new StringBuilder();
Set<Integer> number = new HashSet<>();
number.add(0);
StringBuilder result = new StringBuilder();
result.append(words[0]).append(" ");
for (int i = 1; i < words.length; i++) {
String last = getStringBuilderLast(result);
for (int j = 1; j <words.length;j++) {
if (getFirst(words[j]).equalsIgnoreCase(last)&&!(number.contains(j))) {
result.append(words[j]).append(" ");
number.add(j);
break;
}
}
}
return result.deleteCharAt(result.length()-1);
}
}