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"] ]和IP 地址那一题相类似,好像还有使用DP实现的
public class Solution {
public ArrayList<ArrayList<String>> res = new ArrayList<ArrayList<String>>();
public boolean isPal(String s){
int i=0;
int j=s.length() - 1;
while(i <= j){
if(s.charAt(i) == s.charAt(j)){
i++;
j--;
}
else{
return false;
}
}
return true;
}
public void dfs(ArrayList<String> l, String rs){
if(rs.length() == 0){
res.add(new ArrayList(l));
return;
}
for(int i=1; i<=rs.length(); i++){
String substr = rs.substring(0, i);
if(isPal(substr)){
l.add(substr);
dfs(l, rs.substring(i));
l.remove(l.size() - 1);
}
}
}
public ArrayList<ArrayList<String>> partition(String s) {
ArrayList<String> l = new ArrayList<String>();
dfs(l, s);
return res;
}
}