【题目描述】
给你一个字符串 s
,请你将 s
分割成一些子串,使每个子串都是 回文串 。返回 s
所有可能的分割方案。
回文串 是正着读和反着读都一样的字符串。
https://leetcode.cn/problems/palindrome-partitioning/description/
【示例】
【代码】admin
结果有问题
package com.company;标签:return,String,LinkedList,res,list,131,LeeCode,new,回文 From: https://blog.51cto.com/u_13682316/6044926
import java.util.*;
// 2022-02-07
class Solution {
List<List<String>> res = new LinkedList<>();
LinkedList<String> list = new LinkedList<>();
public List<List<String>> partition(String s) {
if (s.length() == 1) {
list.add(s);
res.add(list);
return res;
}
check(s, 0);
System.out.println(res);
return res;
}
private void check(String s, int index) {
if (!res.contains(list) && list.size() != 0){
res.add(new LinkedList<>(list));
}
for (int i = index; i < s.length(); i++){
String tmp = s.substring(i, i + 1);
if (huiwein(tmp)){
list.add(tmp);
check(s, i+1);
list.removeLast();
}
}
}
private boolean huiwein(String s) {
if (s.length() == 1 ) return true;
StringBuilder sb = new StringBuilder(s);
if (sb.toString().equals(sb.reverse().toString())) return true;
return false;
}
}
public class Test {
public static void main(String[] args) {
new Solution().partition("aab"); // [["a","a","b"],["aa","b"]]
new Solution().partition("a"); // 输出:[["a"]]
}
}