leetcode--Palindrome Partitioning

来源:互联网 发布:p2p网络理财规划 编辑:程序博客网 时间:2024/06/05 04:18

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"]  ]
public class Solution {    public List<List<String>> partition(String s) {ArrayList<List<String>> res = new ArrayList<List<String>>();if(s.length()==0) return res;boolean flag[][] = new boolean[s.length()][s.length()];for(int i=0;i<s.length();i++){flag[i][i] = true;}for(int i=s.length()-1;i>=0;i--){for(int j=i+1;j<s.length();j++){if(s.charAt(i)==s.charAt(j)){if(j-i==1){flag[i][j] = true;}else{flag[i][j] = flag[i+1][j-1];}}else{flag[i][j] = false;}}}dfs(res, flag, new ArrayList<String>(), 0, s);return res;    }    void dfs(ArrayList<List<String>> res,boolean[][] flag,List<String> item,int start,String s){if(start==flag.length){res.add(new ArrayList<String>(item));}else{for(int i=start+1;i<flag.length+1;i++){if(flag[start][i-1]){item.add(s.substring(start, i));dfs(res, flag, item, i, s);item.remove(item.size()-1);}}}}}

0 0