Не могу подобрать контрпример.
package com.javarush.task.task22.task2209;
import java.io.*;
import java.lang.reflect.Array;
import java.util.*;
/*
Составить цепочку слов
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
String[] array = getArrayFromFile(fileName);
StringBuilder result = getLine(array);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
StringBuilder sb = new StringBuilder();
Map<String, Integer> map = new HashMap<>();
if (words.length != 0) {
for (int i = 0; i < words.length; i++) {
ArrayList<String> list = new ArrayList<>();
int count = 0;
Collections.addAll(list, words);
int j = 0;
boolean flag = true;
String s = list.get(i);
list.remove(i);
sb.append(s);
while (!list.isEmpty() && flag) {
char[] c = s.toCharArray();
if (list.get(j).toLowerCase().startsWith(("" + c[c.length - 1]).toLowerCase())) {
sb.append(" ");
s = list.get(j);
list.remove(j);
sb.append(s);
j = 0;
count++;
} else j++;
if (j == list.size()) {
flag = false;
for (String d : list) {
if (!sb.toString().equals("")) sb.append(" ");
sb.append(d);
}
}
}
map.put(sb.toString(), count);
sb = new StringBuilder();
}
}
return maxCount(map);
}
public static String[] getArrayFromFile(String fileName) {
String[] array = null;
ArrayList<String> list = new ArrayList<>();
try {
FileInputStream fis = new FileInputStream(fileName);
BufferedReader fileReader = new BufferedReader(new InputStreamReader(fis, "Cp1251"));
while (fileReader.ready()) {
String s = fileReader.readLine();
array = s.split(" ");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Collections.addAll(list,array);
Collections.sort(list);
for (int i = 0; i < array.length; i++) {
array[i]=list.get(i);
}
return array;
}
public static StringBuilder maxCount(Map<String, Integer> map) {
int max = 0;
String sb = new String();
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(String.CASE_INSENSITIVE_ORDER);
sortedMap.putAll(map);
for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
if (entry.getValue() > max) {
max = entry.getValue();
sb = entry.getKey();
}
}
return new StringBuilder(sb);
}
}