【LeetCode】131.Palindrome Partitioning(medium)解题报告
题目地址:https://leetcode.com/problems/palindrome-partitioning/description/
题目描述:
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”]
]
Solution:
/*时间复杂度O(2^n)
空间复杂度O(n)
*/
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> res = new ArrayList<>();
if(s==null || s.length()==0) return res;
helper(res,new ArrayList<>(),s);
return res;
}
public void helper(List<List<String>> res,List<String> temp,String s){
if(s.length()==0){
res.add(new ArrayList<>(temp));
return;
}
for(int i=0;i<s.length();i++){
if(isPalindrome(s.substring(0,1+i))){
temp.add(s.substring(0,i+1));
helper(res,temp,s.substring(i+1));
temp.remove(temp.size()-1);
}
}
}
public boolean isPalindrome(String s){
for(int i=0;i<s.length()/2;i++){
if(s.charAt(i)!=s.charAt(s.length()-1-i)){
return false;
}
}
return true;
}
}
Date:2018年1月13日