Untitled
unknown
plain_text
2 years ago
2.0 kB
10
Indexable
package recursion;
import java.util.ArrayList;
public class FindPalindromPartition {
public static void main(String[] args) {
String str="madam";
ArrayList<ArrayList<String>> totalPartitions=findPalindromicPartition(str);
System.out.println(totalPartitions);
}
private static ArrayList<ArrayList<String>> findPalindromicPartition(String str) {
if(str.length()==1){
ArrayList<ArrayList<String>> flist=new ArrayList<>();
ArrayList<String> list=new ArrayList<>();
list.add(str);
flist.add(list);
return flist;
}
char first= str.charAt(0);
String next=str.substring(1);
ArrayList<ArrayList<String>> result=findPalindromicPartition(next);
ArrayList<ArrayList<String>> finalList=new ArrayList<>();
for(ArrayList<String> l:result){
for(String st:l) {
ArrayList<String> finalInnerList = new ArrayList<>();
finalInnerList.add(first + " " + st);
finalList.add(finalInnerList);
}
}
for(int i=0;i<str.length()-1;i++){
boolean isPalondrom=isPalindromeString(str.substring(0,2+i));
if(isPalondrom) {
String f=str.substring(0,2+i);
String l=str.substring(2+i);
String cvalue=f;
for(int j=0;j<l.length();j++)
cvalue+=" "+l.charAt(j);
ArrayList<String> finalInnerList = new ArrayList<>();
finalInnerList.add(cvalue);
finalList.add(finalInnerList);
}
}
return finalList;
}
private static boolean isPalindromeString(String substring) {
StringBuilder stringBuilder = new StringBuilder(substring);
stringBuilder = stringBuilder.reverse();
return substring.equalsIgnoreCase(String.valueOf(stringBuilder));
}
}
Editor is loading...
Leave a Comment