131. 分割回文串
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab"
[ ["aa","b"], ["a","a","b"] ]
记忆化搜索保存所有回文串。
然后DFS搜索所有回文串的组合。
1 | class Solution { |
这题不熟,第一次遇见,看的题解默写了一遍,加深一下理解,这里记录一下,新知识点
标准判断dp判断回文模板(f[i][j]记录字符串区间i~j是否为回文串)
for(int i = n - 1 ; i >= 0 ; --i) for(int j = i + 1 ; j < n ; ++j) f[i][j] = (s[i]==s[j])&&f[i+1][j-1];
大意就是找到s[i]与s[j] 判断它们两是否相等 并且 s[i+1 ~ j-1] 是否为回文串,满足两个条件,则s区间 (i~j)必定是回文串。
DFS则比较好理解,直接将字符串分割看成树状图。i是当前的分割点。