首页 > 其他 > 详细

动态规划——1312. 让字符串成为回文串的最少插入次数

时间:2021-05-05 17:26:21      阅读:34      评论:0      收藏:0      [点我收藏+]

动态规划——1312. 让字符串成为回文串的最少插入次数

题目:

技术分享图片

思路:

  1. dp数组的定义:dp[i] [j] 代表的是字符串s [i, ... , j]成为回文串的最少插入次数

  2. base_case:i == j 时,dp[i] [j] = 0

  3. 状态转移方程:咋想的呢就是相等的话,就不变;

    不相等的话就得考虑加上前头或者后头的那个最小的操作次数再加1就好了。

    if(s[i] == s[j]){dp[i][j] = dp[i+1][j-1];}
    else{dp[i][j] = min(dp[i][j-1], dp[i+1][j]) + 1;}
    

代码:

class Solution {
public:
    int minInsertions(string s) {
        int n = s.size();
        int dp[n][n];
        memset(dp,0,sizeof(dp));
        
        for(int i = n-2; i>=0;i-- ){
            for(int j =i+1; j<n; j++){
                if(s[i] == s[j]){
                    dp[i][j] = dp[i+1][j-1];
                }else{
                    dp[i][j] = min(dp[i][j-1], dp[i+1][j]) + 1;
                }
            }
        }
        return dp[0][n-1];
    }
};

Rank:

技术分享图片

Tips:

动态规划——1312. 让字符串成为回文串的最少插入次数

原文:https://www.cnblogs.com/lzyrookie/p/14731783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!