题目描述:
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: “aab”
输出:
[
[“aa”,“b”],
[“a”,“a”,“b”]
]
代码:
回溯+递归
class Solution {
public List<List<String>> partition(String s) {
List<List<String>> result = new ArrayList<>();
List<String> list = new ArrayList<>();
getpation(s, result, list);
return result;
}
public void getpation(String s,List<List<String>> tem,List<String> list){
if(s.length() == 0){
tem.add(new ArrayList<>(list));
return ;
}
for (int i = 1; i <= s.length(); i++) {
String sb = s.substring(0, i);
if(isReverse(sb)){
list.add(sb);
getpation(s.substring(i), tem, list);
list.remove(list.size() - 1);
}
}
}
public boolean isReverse(String s){
int left = 0;
int right = s.length() - 1;
while (left <= right) {
if(s.charAt(left) != s.charAt(right)){
return false;
}
left ++;
right --;
}
return true;
}
}