Hi!
I didn't met the last condition I don't see what's going wrong.
If you have some idea or an input test that can bring out the error just share it!
package com.codegym.task.task22.task2209;
/*
Make a word chain
*/
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
String data = null;
Scanner sc;
ArrayList<String> list = new ArrayList<String>();
while ((data = reader2.readLine()) != null) {
sc = new Scanner(data).useDelimiter(" ");
while(sc.hasNext()) {
list.add(sc.next());
}
}
String[] tab = new String[list.size()];
list.toArray(tab);
StringBuilder result = getLine(tab);
System.out.println(result.toString());
}
public static StringBuilder getLine(String... words) {
StringBuilder sb = new StringBuilder();
if(words.length == 0) return sb;
permute(words);
for(String el : Test.listTest) sb.append(el + " ");
return sb.delete(sb.length()-1, sb.length());
}
public static void permute(String[] arr){
permuteHelper(arr, 0);
}
private static void permuteHelper(String[] arr, int index){
if(index >= arr.length - 1){ //If we are at the last element - nothing left to permute
for(int i = 0; i < arr.length - 1; i++){
char firstLetter = arr[i + 1].toLowerCase().charAt(0);
char lastLetter = arr[i].toLowerCase().charAt(arr[i].length() - 1);
if(firstLetter == lastLetter) Test.maxPathLengthCount++;
else break;
}
boolean islimit = false;
boolean islimit2 = false;
if(Test.maxPathLengthCount > Test.maxPathLength) {
Test.maxPathLength = Test.maxPathLengthCount;
Test.listTest.clear();
int i = 0;
Test.listTest.add(arr[i]);
for(i = 1; i < arr.length; i++) {
char firstLetter = arr[i].toLowerCase().charAt(0);
char lastLetter = arr[i - 1].toLowerCase().charAt(arr[i-1].length() - 1);
if(firstLetter == lastLetter) {
Test.listTest.add(arr[i]);
} else break;
}
}
Test.maxPathLengthCount = 0;
return;
}
for(int i = index; i < arr.length; i++){ //For each index in the sub array arr[index...end]
//Swap the elements at indices index and i
String t = arr[index];
arr[index] = arr[i];
arr[i] = t;
//Recurse on the sub array arr[index+1...end]
permuteHelper(arr, index+1);
//Swap the elements back
t = arr[index];
arr[index] = arr[i];
arr[i] = t;
}
}
}