Palindrome Partitioning
Description
Given a string s. Partition s such that every substring in the partition is a palindrome.
Return all possible palindrome partitioning of s.
public class Solution {
/*
* @param s: A string
* @return: A list of lists of string
*/
public List<List<String>> partition(String s) {
// write your code here
List<List<String>> results = new ArrayList<>();
if(s == null){
return results ;
}
if(s.length() == 0){
return results ;
}
List<String> subset = new ArrayList<String>() ;
helper(s , subset , 0, results) ;
return results ;
}
public void helper(String s , List<String> subset , int start , List<List<String>> results){
if(start == s.length()){
results.add(new ArrayList<String>(subset)) ;
return ;
}
for(int i = start ; i < s.length(); i++){
String subString = s.substring(start, i+1) ;
if(!isPalindrome(subString)){
continue ;
}
subset.add(subString) ; ;
helper(s , subset , i+1 , results) ;
subset.remove(subset.size()-1) ;
}
}
public boolean isPalindrome(String s){
for(int i = 0 , j = s.length()-1 ; i < j ; i++ , j--){
if(s.charAt(i) != s.charAt(j)){
return false ;
}
}
return true ;
}
}