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

一、题目描述

二、题解

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

1、状态表示

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

2、状态转移方程

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

5、返回值

最后返回dp[0][n-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];
    }
}
相关推荐
忆锦紫3 分钟前
图像降噪算法:中值滤波算法及MATLAB实现
图像处理·算法·matlab
知乎的哥廷根数学学派5 分钟前
基于多分辨率注意力脉冲神经网络的机械振动信号故障诊断算法(西储大学轴承数据,Pytorch)
人工智能·pytorch·深度学习·神经网络·算法·机器学习
kebijuelun16 分钟前
Qwen 团队提出 ArenaRL:面向开放式 Agent RL 任务
人工智能·算法·语言模型·transformer
机器学习之心18 分钟前
PSO优化的K-means++聚类算法用于用户用电行为分析的实现方案
算法·kmeans·聚类
小黄鸭code22 分钟前
C++ 算法笔试题(常见算法版)
c++·算法·排序算法
lixinnnn.25 分钟前
优先级队列:最小函数值
数据结构·算法
Xの哲學27 分钟前
Linux Worklet 深入剖析: 轻量级延迟执行机制
linux·服务器·网络·数据结构·算法
666HZ66629 分钟前
数据结构2.1 线性表习题
c语言·数据结构·算法
lihao lihao35 分钟前
C++ set和map
开发语言·c++·算法
学嵌入式的小杨同学41 分钟前
顺序表(SqList)完整解析与实现(数据结构专栏版)
c++·算法·unity·游戏引擎·代理模式