天天看點

LeetCode-----回文串分割回文串分割

回文串分割

Given a string s, partition s such that every substring of the partition is a palindrome.

Return all possible palindrome partitioning of s.

For example, given s =”aab”,

Return

[

[“aa”,”b”],

[“a”,”a”,”b”]

]

import java.util.*;

public class main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s="bb";
        ArrayList<ArrayList<String>> list=partition(s);
        for (ArrayList<String> l:list){
            System.out.print(l);
        }
    }
    public static ArrayList<ArrayList<String>> partition(String s) {
        ArrayList<ArrayList<String>> list=new ArrayList<ArrayList<String>>();
        list=partitionDi(s);
        return list;
    }
    public static ArrayList<ArrayList<String>> partitionDi(String s) {
        ArrayList<ArrayList<String>> res=new ArrayList<ArrayList<String>>();
        if (s.length()==){
            return res;
        }
        if (s.length()==){
            ArrayList<String> inList=new ArrayList<String>();
            inList.add(s);
            res.add(inList);
            return res;
        }
        for (int i=;i<s.length();i++){
            if (isPalindrome(s.substring(,i+))){
                if (i==s.length()-){
                    ArrayList<String> inList=new ArrayList<String>();
                    inList.add(s.substring(,i+));
                    res.add(inList);
                }
                ArrayList<ArrayList<String>> list=partitionDi(s.substring(i+));
                for (int j=;j<list.size();j++){
                    ArrayList<String> inList=new ArrayList<String>();
                    inList.add(s.substring(,i+));
                    inList.addAll(list.get(j));
                    res.add(inList);
                }
            }
        }
        return res;
    }
    public static boolean isPalindrome(String s){
        int i=;
        int j=s.length()-;
        while (i<j){
            if (s.charAt(i)!=s.charAt(j)){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}