解题步骤:
参考代码:
class Solution {
public:
bool checkPartitioning(string s) {
int n=s.size();
vector<vector<bool>> dp(n,vector<bool>(n));
for(int i=n-1;i>=0;i--)
{
for(int j=i;j<n;j++)
{
if(s[i]==s[j])
{
dp[i][j]=i+1<j?dp[i+1][j-1]:true;
}
}
}
for(int i=1;i<n-1;i++)
{
for(int j=i;j<n-1;j++)
{
//如果能找到同时满足这三个条件的,就说明该字符串可以分成三个回文串
if(dp[0][i-1]&&dp[i][j]&&dp[j+1][n-1])
{
return true;
}
}
}
//找不到就返回false
return false;
}
};
你学会了吗???