链接:https://leetcode-cn.com/problems/minimum-insertion-steps-to-make-a-string-palindrome/
找出字符串中的最长回文子序列(不是子串),再用字符串长度减去这个长度就是最终结果。
C++代码:
class Solution {
public:
int minInsertions(string s) {
vector<vector<int>> dp(s.size(),vector<int>(s.size(),0));
for(int i = s.size()-1;i>=0;i--)
{
for(int j = i;j<s.size();j++)
{
if(i==j)
dp[i][j] = 1;
else
{
if(s[i]==s[j])
dp[i][j] = dp[i+1][j-1]+2;
else
dp[i][j] = max(dp[i+1][j],dp[i][j-1]);
}
}
}
return s.size()-dp[0][s.size()-1];
}
};