leetcode------Palindrome Partitioning

标题:

Palindrome Partitioning

通过率: 26.3%
难度: 中等

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"]
  ]

本题还是一个递归的过程,只是再递归的时候要判断是否为回文函数,然后就是字符串的截取,具体看代码

 1 public class Solution {
 2     public ArrayList<ArrayList<String>> partition(String s) {
 3         ArrayList<ArrayList<String>> res=new ArrayList<ArrayList<String>>();
 4         ArrayList<String> tmp=new ArrayList<String>();
 5         getpa(res,tmp,s);
 6         return res;
 7     }
 8     public void getpa(ArrayList<ArrayList<String>> res,ArrayList<String> tmp,String s){
 9         if(s.length()==0||s==null){
10             res.add(new ArrayList<String>(tmp));
11         }
12         else{
13             for(int i=1;i<=s.length();i++){
14                 if(ispa(s.substring(0,i))){
15                     tmp.add(s.substring(0,i));
16                     getpa(res,tmp,s.substring(i));
17                     tmp.remove(tmp.size()-1);
18                 }
19             }
20         }
21     }
22     public boolean ispa(String s){
23         for(int i=0,j=s.length()-1;i<j;i++,j--){
24             if(s.charAt(i)!=s.charAt(j))
25                 return false;
26         }
27         return true;
28     }
29 }

 

posted @ 2015-03-16 15:29  pku_smile  阅读(202)  评论(0编辑  收藏  举报