【LeeCode】131. 分割回文串 -- 异常

时间:2023-02-07 22:59:37


【题目描述】

给你一个字符串 ​​s​​,请你将 ​s​ 分割成一些子串,使每个子串都是 回文串 。返回 ​​s​​ 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

​https://leetcode.cn/problems/palindrome-partitioning/description/​

【示例】

【LeeCode】131. 分割回文串  -- 异常

【代码】admin

结果有问题

package com.company;

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"]]
}
}