131. Palindrome Partitioning

来源:互联网 发布:顶易软件多少钱 编辑:程序博客网 时间:2024/06/15 15:01

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




暴力DFS,注意的是会漏掉一个情况:就是整个字符串是一个回文,另外判断就是

import java.util.ArrayList;import java.util.List;public class Solution {    public List<List<String>> partition(String s) {    List<List<String>> rst = new ArrayList<List<String>>();    if(s.length() == 1){    List<List<String>> oneCase = new ArrayList<List<String>>();    List<String> tmp = new ArrayList<String>();    tmp.add(s);    oneCase.add(tmp);    return oneCase;    }        for(int i=1; i<s.length(); i++)        if(isPalidrome(s.substring(0, i))) {        List<List<String>> left = partition(s.substring(i));        for(int j=0; j<left.size(); j++) {        List<String> tmp = new ArrayList<String>();        tmp.add(s.substring(0, i));        tmp.addAll(left.get(j));        rst.add(tmp);        }        }                if(isPalidrome(s)) {    List<String> tmp = new ArrayList<String>();    tmp.add(s);    rst.add(tmp);        }            return rst;    }public boolean isPalidrome(String s) {int p = 0, q = s.length() - 1;while(p < q) {if(s.charAt(p) != s.charAt(q))return false;p++;q--;}return true;}}


0 0