[Algorithm][动态规划][回文串问题][分割回文串 II][最长回文子序列][让字符串成为回文串的最少插入次数]详细讲解

目录

  • 1.分割回文串 II
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现
  • 2.最长回文子序列
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现
  • 3.让字符串成为回文串的最少插入次数
    • 1.题目链接
    • 2.算法原理详解
    • 3.代码实现


1.分割回文串 II

1.题目链接

  • 分割回文串 II

2.算法原理详解

  • 思路
    • 确定状态表示 -> dp[i]的含义

      • 子串s[0][i],最少分割次数
    • 推导状态转移方程
      请添加图片描述

    • 优化:按回文子串逻辑,将字符串内的所有字串是否是回文先判断出来

    • 初始化:vector<int> dp(n, INT_MAX)

    • 确定填表顺序:从左往右

    • 确定返回值:dp[n - 1]


3.代码实现

int minCut(string s) 
{
    int n = s.size();

    // 预处理
    vector<vector<bool>> isPal(n, vector<bool>(n));
    for(int i = n - 1; i >= 0; i--)
    {
        for(int j = i; j < n; j++)
        {
            if(s[i] == s[j])
            {
                isPal[i][j] = i + 1 < j ? isPal[i + 1][j - 1] : true;
            }
        }
    }

    // DP
    vector<int> dp(n, INT_MAX);
    for(int i = 0; i < n; i++)
    {
        if(isPal[0][i])
        {
            dp[i] = 0;
        }
        else
        {
            for(int j = 1; j <= i; j++)
            {
                if(isPal[j][i])
                {
                    dp[i] = min(dp[j - 1] + 1, dp[i]);
                }
            }
        }
    }

    return dp[n - 1];
}

2.最长回文子序列

1.题目链接

  • 最长回文子序列

2.算法原理详解

  • 思路
    • 确定状态表示 -> dp[i]的含义

      • s字符串[i, j]区间内的所有的子序列,最长的回文子序列的长度(i <= j)
    • 推导状态转移方程
      请添加图片描述

    • 初始化:不用初始化

    • 确定填表顺序:从下往上,从左往右

    • 确定返回值:dp[0][n - 1]


3.代码实现

int longestPalindromeSubseq(string s) 
{
    int n = s.size();
    vector<vector<int>> dp(n, vector<int>(n));

    for(int i = n - 1; i >= 0; i--)
    {
        dp[i][i] = 1;
        for(int j = i + 1; j < n; j++)
        {
            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 dp[0][n - 1];
}

3.让字符串成为回文串的最少插入次数

1.题目链接

  • 让字符串成为回文串的最少插入次数

2.算法原理详解

  • 思路
    • 确定状态表示 -> dp[i]的含义

      • s字符串[i, j]区间内的子串,使它成为回文串的最小插入次数(i <= j)
    • 推导状态转移方程
      请添加图片描述

    • 初始化:不用初始化

    • 确定填表顺序:从下往上,从左往右

    • 确定返回值:dp[0][n - 1]


3.代码实现

int minInsertions(string s) 
{
    int n = s.size();
    vector<vector<int>> dp(n, vector<int>(n));
    for(int i = n - 1; 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 + 1][j], dp[i][j - 1]) + 1;
            }
        }
    }

    return dp[0][n - 1];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/681070.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

现代操作系统(第四版)课后习题-4.文件系统

四、文件系统 1.给出文件/etc/passwd的五种不同的路径名 在Unix和类Unix系统中&#xff0c;/etc/passwd 是系统中所有用户账户信息的标准文件。 绝对路径&#xff1a;直接使用文件的绝对路径来访问。 /etc/passwd使用环境变量&#xff1a;如果设置了环境变量指向某个目录&…

Java中的接口与抽象类:区别与联系

Java中的接口与抽象类&#xff1a;区别与联系 在Java中&#xff0c;interface&#xff08;接口&#xff09;和abstract class&#xff08;抽象类&#xff09;是两种重要的抽象类型&#xff0c;用于定义对象的抽象行为和结构。虽然Java 8之后接口引入了默认方法和静态方法&…

磁场定向控制转速环PI调节器参数整定

前言 本章节采用工程设计的方法&#xff0c;推导转速环PI调节器参数的计算公式&#xff0c;由此来设计永磁同步电机磁场定向控制的转速外环PI调节器参数&#xff0c;并通过Matlab/Simulink对设计的PI调节器进行Bode图分析。 一、调节器的工程设计方法 要实现调节器的工程设计…

kube-promethesu新增k8s组件监控(etcd\kube-controller-manage\kube-scheduler)

我们的k8s集群是二进制部署 一、prometheus添加自定义监控与告警&#xff08;etcd&#xff09; 1、步骤及注意事项&#xff08;前提&#xff0c;部署参考部署篇&#xff09; 1.1 一般etcd集群会开启HTTPS认证&#xff0c;因此访问etcd需要对应的证书 1.2 使用证书创建etcd的…

[next.js]pwa缓存

配置Next.js (v14 App Router模式) 使其支持PWA缓存&#xff0c;配置server worker和mainfest.json&#xff0c;让项目支持离线访问和可安装。 安装依赖next-pwa npm i next-pwa配置next.config.js const path require(path);const withPWAInit require(next-pwa);// 判断…

俄罗斯人有哪些常用的口头禅,柯桥零基础俄语培训

Хватит! 够了&#xff01; -Хватит, не стоит больше шуметь! 够了, 不要再吵了! -Это тебя не касается! 这与你无关&#xff01; Блин! 靠&#xff01; Блин这个词绝对是俄罗斯人最爱用的口语表达之一&#xff0c;…

给快高考的儿子的一封信:关于选择计算机专业

亲爱的儿子&#xff0c; 你好&#xff01; 时间过得真快&#xff0c;转眼间你就要高考了&#xff0c;这不仅是你人生中的一个重要时刻&#xff0c;也是我们全家都非常关注的节点。妈妈告诉我&#xff0c;你对计算机专业很感兴趣&#xff0c;希望我能给你一些建议。我很高兴听…

阿里云邮件推送配置教程:有哪些关键步骤?

阿里云邮件推送服务如何配置&#xff1f;如何设置SMTP服务器&#xff1f; 阿里云作为国内领先的云服务提供商&#xff0c;其邮件推送服务具有高效、稳定和可靠的特点&#xff0c;因此备受企业青睐。Aok将介绍阿里云邮件推送配置教程的关键步骤&#xff0c;并简要提及AokSend的…

重要经济数据对行情的影响有多大?

金融市场上的消息非常多&#xff0c;可以来自不同国家、不同大型企业&#xff0c;也可以由不同机构统计公布&#xff0c;甚至是各国政府或中央银行的发表。在宏观经济层面上&#xff0c;所有政经消息都属于金融市场的风险事件&#xff0c;大多能引起市场波动&#xff0c;因此投…

LC 26删除有序数组中的重复项

去重题&#xff0c;双指针&#xff0c;&#xff0c;因为题干说原地删除&#xff0c;且nums其余元素不重要。一个cur记录当前不重复的数应该插在第几位了&#xff0c;for循环里的i相当于是第二个指针&#xff08;右指针&#xff09;&#xff0c;遍历数组来找不重复的元素 class …

2024/6/5(页面静态化,熔断降级,降级处理,ES搜索实例,课程信息同步,认证授权,单点登录,Spring Security,OAuth2,授权模式)

elasticsearch目录下执行docker-compose up -d 完美解决 执行下面这个命令 curl -XDELETE localhost:9200/.kibana_task_manager_7.12.1_001 重启es和kibana服务

【知识】NP及其相关问题的概念

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 NP问题 1. P 类问题 2. NP 类问题 3. NP-Complete 问题 4. NP-Hard 问题 5. NP-Hardness 例子 &#x1f31f; 其他问题 1. co-NP 2. PS…

html写一个table表

HTML代码&#xff1a; <div class"table_box w-full"><div class"title_top">XX表</div><div class"title_btm">(<input class"input input_1" type"text">xxxx)</div><table class…

爬虫之反爬思路与解决手段

阅读时间建议&#xff1a;4分钟 本篇概念比较多&#xff0c;嗯。。 0x01 反爬思路与解决手段 1、服务器反爬虫的原因 因为爬虫的访问次数高&#xff0c;浪费资源&#xff0c;公司资源被批量抓走&#xff0c;丧失竞争力&#xff0c;同时也是法律的灰色地带。 2、服务器反什么…

【成品设计】基于华大hc32F005c6ua的读取NFC卡

《基于华大hc32F005c6ua的读取NFC卡》 整体功能&#xff1a; 单片机:华大hc32F005c6ua 1、支持单片机spi接口读取nfc读卡器芯片rc522读写数据 2、读取到的数据可以通过单片机uart接口通信&#xff0c;上报给上位机&#xff08;485主机&#xff09; 3、uart接口支持modbus协议…

我国液碱产量逐渐增长 行业集中度有望不断提升

我国液碱产量逐渐增长 行业集中度有望不断提升 液碱是由氢氧化钠&#xff08;NaOH&#xff09;、氢氧化钾&#xff08;KOH&#xff09;等化合物以及水组成的一种碱性化合物。液碱的相对分子质量为40.00&#xff0c;密度为1.318g/cm&#xff0c;在常温常压下多表现为一种无色、无…

阿里云邮件推送服务配置教程:怎么做批发?

阿里云邮件推送的API配置步骤&#xff1f;配置教程有哪些步骤&#xff1f; 阿里云邮件推送服务凭借其高并发、稳定性强和安全性高等特点&#xff0c;成为众多企业的首选。Aok将详细介绍如何使用阿里云邮件推送服务进行批发配置&#xff0c;并简要提及AokSend的优势。 阿里云邮…

ArcGIS for Vue3

二维&#xff1a; 1、创建vue项目 npm create vitelatest 2、安装ArcGIS JS API依赖包 npm install arcgis/core 3、引入ArcGIS API for JavaScript模块 <script setup> import "arcgis/core/assets/esri/themes/light/main.css"; import Map from arcgis…

南卡、韶音、Cleer、漫步者开放式耳机好用吗?最强开放式耳机对比揭秘!

在挑选开放式耳机时&#xff0c;个人经验和实际需求应当优先考虑&#xff0c;而非盲目追随潮流或品牌效应。投资耳机前务必慎重&#xff0c;毕竟高价值商品若无法退换&#xff0c;难免造成遗憾。为了帮助大家做出更加明智的决策&#xff0c;我亲自出资购买并测试了市面上多款主…

dnspython 处理方法

A记录&#xff1a;将主机名转换为IP地址 #!/usr/bin/python3.6.7 import dns.resolver# 接收数据 domain input("请输入一个域名>>>:") dns_type A query_object dns.resolver.resolve(domain, rdtypedns_type,lifetime10) for i in query_object:print…