1745. 分割回文串 IV
题目描述:
给你一个字符串 s
,如果可以将它分割成三个 非空 回文子字符串,那么返回 true
,否则返回 false
。
当一个字符串正着读和反着读是一模一样的,就称其为 回文字符串 。
解题思路:
在647题的基础上, 我们从后向前遍历dp表中所有为true的情况,看否可以将他们分为3段
解题代码:
class Solution {
public:
bool checkPartitioning(string s) {
int n=s.size();
vector<vector<bool>>dp(n,vector(n,false));
for(int i=n-1;i>=0;i--)
{
for(int j=i;j<n;j++)
{
if(s[i]==s[j])
{
if(i==j)dp[i][j]=true;
else if(i+1==j)dp[i][j]=true;
else dp[i][j]=dp[i+1][j-1];
}
}
}
for(int i=n-1;i>=0;i--)
{
if(dp[i][n-1]==true)
{
for(int begin=i-1;begin>0;begin--)
{
if(dp[begin][i-1]==true&&dp[0][begin-1]==true)
return true;