【力扣】1312. 让字符串成为回文串的最少插入次数

一、题目描述

二、题解

本题我们利用动态规划的思想来解决。

1、状态表示

首先创建一个dp数组,dpij 表示的是将字符串 s 的 i, j 区间的这一子串,变成回文串的最少插入次数。

2、状态转移方程

3、初始化
根据「状态转移方程」,没有不能递推表示的值。 无需初始化
4、填表顺序
根据「状态转移方程」,我们发现,在 dp 表所表示的矩阵中, dpi + 1 表示下一行的位置,
dpj - 1 表示前一列的位置。因此我们的填表顺序应该是 从下往上填写每一行,每一行从左往右

5、返回值

最后返回dp0n-1的值即可。

三、 解题代码

java 复制代码
class Solution {
    public int minInsertions(String s) {
        int n = s.length();
        //创建dp表
        int[][] dp = new int[n][n];
        //无需初始化
        //填写dp表
        for(int i = n-1; i >= 0; i--) {
            for(int j = i; j < n; j++) {
                if(s.charAt(i) == s.charAt(j)) {
                    if(i == j) {
                        dp[i][j] = 0;
                    }else if(i + 1 == j) {
                        dp[i][j] = 0;
                    }else {
                        dp[i][j] = dp[i+1][j-1];
                    }
                }else {
                    dp[i][j] = Math.min(1 + dp[i][j-1], 1 + dp[i+1][j]);
                }
            }
        }
        return dp[0][n-1];
    }
}
相关推荐
旖旎夜光2 分钟前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚9 分钟前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
奈斯先生Vector12 分钟前
从“能调用”到“可运营”:AI Agent 进入多模型时代后的架构升级
java·javascript·数据库·人工智能·算法·架构·aigc
2601_9561219724 分钟前
Bellman-ford算法
算法
叠层归一研究院30 分钟前
基于区分本源的此刻存在唯一性本体论推演
人工智能·算法
luj_176831 分钟前
尾椎藏今生记忆?骨盆对应不确定性
开发语言·网络·c++·经验分享·算法
深圳多奥智能一卡(码、脸)通系统33 分钟前
智能梯控SDK可直接用于第三方开发对接的接口文档说明书
服务器·前端·算法
裕晟资质规划10 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
en.en..11 小时前
C语言 标准输入 / 输出缓冲区
算法