Untitled

 avatar
unknown
plain_text
a year ago
2.0 kB
7
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