问题描述
给定一个字符串 s ,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
import java.util.List;
import java.util.ArrayList;
class Solution {
public static List<List<String>> solution(String tmp){
if(null == tmp || tmp.length() == 0){
return Collections.emptyList();
}
List<List<String>> result = new ArrayList<List<String>>();
solution(result, tmp, 0, new ArrayList<String>());
return result;
}
private static void solution(List<List<String>> result, String tmp, int index, List<String> list){
if(index >= tmp.length()){
result.add(new ArrayList<String>(list));
return;
}
for(int i = index; i < tmp.length(); i++){
if(isPlalindrome(tmp, index, i)){
list.add(tmp.substring(index, i + 1));
solution(result, tmp, i + 1, list);
list.remove(list.size() - 1);
}
}
}
private static boolean isPlalindrome(String s, int begin, int end){
while(begin < end){
if(s.charAt(begin++) != s.charAt(end--)){
return false;
}
}
return true;
}
}