当前位置: 首页 > ops >正文

让字符串变成回文串的最少插入次数-二维dp

1312. 让字符串成为回文串的最少插入次数 - 力扣(LeetCode)

Solution

#include<iostream>
#include<vector>
#include<string>
using namespace std;class Solution {
public:int minInsertions1(string s) {int n = s.length();return f1(s, 0, n - 1);}int minInsertions2(string s) {int n = s.length();vector<vector<int>>dp(n + 1, vector<int>(n + 1, -1));return f2(s, 0, n - 1, dp);}int minInsertions3(string s) {return f3(s);}int minInsertions(string s) {return f4(s);}//递归做法int f1(string s, int l, int r) {if (l == r)return 0;if (l + 1 == r)return (s[l] == s[r]) ? 0 : 1;if (s[l] == s[r])return f1(s, l + 1, r - 1);else {return min(f1(s, l + 1, r) + 1, f1(s, l, r - 1) + 1);}}//带缓存表的递归int f2(string s, int l, int r, vector<vector<int>>& dp) {if (dp[l][r] != -1)return dp[l][r];int ans;if (l == r)ans = 0;else if (l + 1 == r)ans = (s[l] == s[r]) ? 0 : 1;else if (s[l] == s[r]) {ans = f2(s, l + 1, r - 1, dp);}else {ans = min(f2(s, l + 1, r, dp) + 1, f2(s, l, r - 1, dp) + 1);}dp[l][r] = ans;return ans;}//dp做法int f3(string s) {int n = s.length();vector<vector<int>>dp(n + 1, vector<int>(n + 1, 0));//base casefor (int i = 0; i < n; ++i) {dp[i][i + 1] = (s[i] == s[i + 1]) ? 0 : 1;}for (int i = n - 3; i >= 0; --i) {for (int j = i + 2; j < n; ++j) {if (s[i] == s[j]) dp[i][j] = dp[i + 1][j - 1];else dp[i][j] = min(dp[i + 1][j], dp[i][j - 1]) + 1;}}return dp[0][n - 1];}//dp+空间压缩int f4(string s) {int n = s.length();vector<int>dp(n, 0);for (int i = n - 1; i >= 0; --i) {int leftdown = 0, back;for (int j = i; j < n; ++j) {back = dp[j];if (i == j) dp[j] = 0;else if (i + 1 == j) dp[j] = (s[i] == s[j]) ? 0 : 1;else if (s[i] == s[j]) dp[j] = leftdown;else dp[j] = min(dp[j], dp[j - 1]) + 1;leftdown = back;}}return dp[n - 1];}
};int main() {return 0;
}

http://www.xdnf.cn/news/20157.html

相关文章:

  • 单元测试详解
  • 基于树莓派与Jetson Nano集群的实验边缘设备上视觉语言模型(VLMs)的性能评估与实践探索
  • 【c++进阶系列】:万字详解AVL树(附源码实现)
  • ubuntu 系統使用過程中黑屏問題分析
  • 前端上传切片优化以及实现
  • 基于LLM开发Agent应用开发问题总结
  • equals 定义不一致导致list contains错误
  • SQL面试题及详细答案150道(81-100) --- 子查询篇
  • webrtc弱网-LossBasedBandwidthEstimation类源码分析与算法原理
  • 【Proteus仿真】定时器控制系列仿真——秒表计数/数码管显示时间
  • 【ComfyUI】混合 ControlNet 多模型组合控制生成
  • ANSYS HFSS边界条件的认识
  • 【LeetCode热题100道笔记】二叉树中的最大路径和
  • 9.FusionAccess桌面云
  • Spring的事件监听机制(一)
  • 03.缓存池
  • 【数学建模】质量消光系数在烟幕遮蔽效能建模中的核心作用
  • 故障诊断 | MATLAB基于CNN - LSSVM组合模型在故障诊断中的应用研究
  • 在Ubuntu上配置Nginx实现开机自启功能
  • 54.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--实现手机邮箱注册
  • js面试题 什么是作用域?
  • 【Proteus仿真】定时器控制系列仿真——LED小灯闪烁/流水灯/LED灯带控制/LED小灯实现二进制
  • EG2104 SOP-8 带SD功能 内置600V功率MOS管 栅极驱动芯片
  • 智能客户服务支持智能体
  • 基于GOA与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 登录优化(双JWT+Redis)
  • 开源AI智能名片链动2+1模式S2B2C商城小程序服务提升复购率和转介绍率的研究
  • 80(HTTP默认端口)和8080端口(备用HTTP端口)区别
  • phpMyAdmin文件包含漏洞复现:原理详解+环境搭建+渗透实战(vulhub CVE-2018-12613)
  • Linux 使用pip报错(error: externally-managed-environment )解决方案