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

力扣---最长回文子串---二维动态规划

二维动态规划思路:

         首先,刚做完这道题:力扣---最长有效括号---动态规划,栈-CSDN博客,所以会有一种冲动,设立g[i],表示以第i位为结尾的最长回文子串长度,然后再遍历一遍取最大长度即可。但是,后来发现如果g[i]如此表示,很难得到递推公式。所以转到二维,设立g[i][j](bool),将其表示以第i位开头第j位结尾的子串是否是回文子串,并用l和r记录到目前为止最长回文子串的左索引和右索引。所以,递推公式为g[i][j]={如果s[i]==s[j]且g[i+1][j-1]是回文子串,则为1}。此时有需要独立判断两种情况:第一种情况是子串长度为1,g[i][i]=1,第二种情况是子串长度为2(j-i==1),如果s[i]==s[j],则g[i][j]=2。

        还要说明一点,为什么在二重循环时,i 的顺序是从len-1到0,j 的顺序是从i到len。因为由g[i+1][j-1]推及g[i][j],所以我们需要先从左下角向右上角开始推,行数(i)从大到小,列数(j)从小到大。

代码:

C++:

class Solution {
public:string longestPalindrome(string s) {int len=s.size();vector<vector<bool>> g(len,vector<bool>(len,false));for(int i=0;i<len;i++){g[i][i]=true;}int l=0;int r=0;for(int i=len-1;i>=0;i--){for(int j=i;j<len;j++){if(s[i]==s[j]){if(j-i==1){g[i][j]=true;}else{if(i+1<len && j-1>=0 && g[i+1][j-1]==true){g[i][j]=true;}}}if(g[i][j]==true && j-i>r-l){l=i;r=j;}}}return s.substr(l,r-l+1);}
};

Python:

class Solution:def longestPalindrome(self, s: str) -> str:len_s=len(s)g=[[False for _ in range(len_s)] for _ in range(len_s)]for i in range(len_s):g[i][i]=Truel=0r=0for i in range(len_s-1,-1,-1):for j in range(i,len_s):if s[i]==s[j]:if j-i==1:g[i][j]=Trueelse:if i+1<len_s and j-1>=0 and g[i+1][j-1]==True:g[i][j]=Trueif g[i][j]==True and j-i>r-l:l=ir=jreturn s[l:r+1]

注意这句话的写法:

g=[[False for _ in range(len_s)] for _ in range(len_s)]

相关文章:

力扣---最长回文子串---二维动态规划

二维动态规划思路&#xff1a; 首先&#xff0c;刚做完这道题&#xff1a;力扣---最长有效括号---动态规划&#xff0c;栈-CSDN博客&#xff0c;所以会有一种冲动&#xff0c;设立g[i]&#xff0c;表示以第i位为结尾的最长回文子串长度&#xff0c;然后再遍历一遍取最大长度即可…...

(一)kafka实战——kafka源码编译启动

前言 本节内容是关于kafka消息中间键的源码编译&#xff0c;并通过idea工具实现kafka服务器的启动&#xff0c;使用的kafka源码版本是3.6.1&#xff0c;由于kafka源码是通过gradle编译的&#xff0c;以及服务器是通过scala语言实现&#xff0c;我们要预先安装好gradle编译工具…...

Spring Boot 使用 Redis

1&#xff0c;Spring 是如何集成Redis的&#xff1f; 首先我们要使用jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><gro…...

火车头通过关键词采集文章的原理

随着互联网信息的爆炸式增长&#xff0c;网站管理员和内容创作者需要不断更新和发布新的文章&#xff0c;以吸引更多的用户和提升网站的排名。而火车头作为一款智能文章采集工具&#xff0c;在这一过程中发挥着重要作用。本文将探讨火车头如何通过关键词采集文章&#xff0c;以…...

Kafka 面试题及参考答案

目录 1. Kafka 的核心特性是什么? 2. Kafka 为什么能够实现高吞吐量? 3. Kafka 的消息丢失是...

【Qt 学习笔记】Day1 | Qt 背景介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Day1 | Qt 背景介绍 文章编号&#xff1a;Qt 学习笔记 / 01 文章目录…...

springboot3.2.4+Mybatis-plus在graalvm21环境下打包exe

springboot3.2.4Mybatis-plus在graalvm21环境下打包exe 前提条件为之前已经能直接打包springboot3.2.4项目了然后在此基础上接入Mybatis-plus&#xff0c;然后能够正常进行打包exe并且执行&#xff0c;参考之前的文章进行打包 核心配置如下 package com.example.demo.config…...

Kubernetes(K8S)学习(二):K8S常用组件

K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace&#xff08;命名空间&#xff09;1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内&#xff1a;同一个Pod中的容器通信2、…...

如何使用群晖WebDAV实现固定公网地址同步Zotero文献管理器

文章目录 前言1. Docker 部署 Trfɪk2. 本地访问traefik测试3. Linux 安装cpolar4. 配置Traefik公网访问地址5. 公网远程访问Traefik6. 固定Traefik公网地址 前言 Trfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件&#xff0c;能轻易的部署微服务。它支持多种后端 (D…...

【JavaSE】初识线程,线程与进程的区别

文章目录 ✍线程是什么&#xff1f;✍线程和进程的区别✍线程的创建1.继承 Thread 类2.实现Runnable接口3.匿名内部类4.匿名内部类创建 Runnable ⼦类对象5.lambda 表达式创建 Runnable ⼦类对象 ✍线程是什么&#xff1f; ⼀个线程就是⼀个 “执行流”. 每个线程之间都可以按…...

全国青少年软件编程(Python)等级考试三级考试真题2023年9月——持续更新.....

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 一、单选题(共25题&#xff0c;共50分) 1.有一组数据存在列表中,things[“桌子”,“椅子”,“茶几”,“沙发”,“西瓜”,“苹果”,“草莓”,“…...

react-navigation:

我的仓库地址&#xff1a;https://gitee.com/ruanjianbianjing/bj-hybrid react-navigation&#xff1a; 学习文档&#xff1a;https://reactnavigation.org 安装核心包: npm install react-navigation/native 安装react-navigation/native本身依赖的相关包: react-nativ…...

nginx负载均衡模式

轮询 (Round Robin) 用法&#xff1a;这是Nginx默认的负载均衡策略。每个请求会按顺序分配给upstream中的后端服务器&#xff0c;即按照配置的服务器列表顺序依次分配。 upstream backend {server backend1.example.com;server backend2.example.com;server backend3.example.…...

手写简易操作系统(十七)--编写键盘驱动

前情提要 上一节我们实现了锁与信号量&#xff0c;这一节我们就可以实现键盘驱动了&#xff0c;访问键盘输入的数据也属于临界区资源&#xff0c;所以需要锁的存在。 一、键盘简介 之前的 ps/2 键盘使用的是中断驱动的&#xff0c;在当时&#xff0c;按下键盘就会触发中断&a…...

springboot中基于RestTemplate 类 实现调用第三方API接口【POST版本】

https://blog.csdn.net/Drug_/article/details/135111675 这一篇的升级版 还是先配置文件 package com.init.config;import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.clie…...

编程器固件修改教程

首发csdn&#xff0c;转载请说明出处&#xff0c;保留一切权益。 关于编程器固件 所谓编程器固件是用编程器读取嵌入式设备的FLASH存储数据生成的文件&#xff0c;类似于直接用工具复制整个硬盘 编程器固件与普通固件的差异 编程器固件是用特定的结构(按顺序、大小)将一些文件系…...

Python从原Excel表中抽出数据存入同一文件的新的Sheet(附源码)

python读取excel数据。Python在从原Excel表中抽出数据并存储到同一文件的新的Sheet中的功能&#xff0c;充分展示了其在数据处理和自动化操作方面的强大能力。这一功能不仅简化了数据迁移的过程&#xff0c;还提高了数据处理的效率&#xff0c;为数据分析和管理工作带来了极大的…...

计算机网络实验六:路由信息协议RIP

目录 6 实验六:路由信息协议RIP 6.1 实验目的 6.2 实验步骤 6.2.1 构建网络拓扑、配置各网络设备 6.2.2 网络功能验证测试 6.3 实验总结 6 实验六:路由信息协议RIP 6.1 实验目的 (1)学习RIP协议的工作原理和特点 (2)学习如何选择最短路径路由。 (3)进一步掌握…...

MySQL数据库备份策略与实践详解

目录 引言 一、MySQL数据库备份的重要性 &#xff08;一&#xff09;数据丢失的原因 &#xff08;二&#xff09;数据丢失的后果 二、MySQL备份类型 &#xff08;一&#xff09;根据数据库状态 &#xff08;二&#xff09;根据数据的完整性 &#xff08;三&#xff09;…...

String类相关oj练习

前言&#xff1a; 此处练习对应博客文章&#xff1a;公主&#xff0c;王子&#xff0c;请点击​​​​​​​ 1.第一次只出现一次的字符 做题首先看清要求和提示&#xff1a; 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不…...

从零到一实战:基于快马平台快速开发企业级jiyutrainer在线评测系统

今天想和大家分享一个很实用的开发经验——如何快速搭建一个企业级的在线编程评测系统。最近正好有个朋友想做一个类似jiyutrainer的编程练习平台&#xff0c;我就用InsCode(快马)平台试了试&#xff0c;效果出乎意料的好。 项目需求分析 首先明确我们需要实现的核心功能&#…...

A-59F 多功能语音处理模组:覆盖全场景人群,让每一次语音都清晰无噪

在门禁对讲、会议扩音、车载通话、导游喊话、监护设备、智能工牌等各类语音设备中&#xff0c;啸叫刺耳、环境嘈杂、回音不断、拾音模糊、通话断续是所有人共同的痛点。一款真正解决问题的核心硬件 ——A-59F 多功能语音处理模组&#xff0c;它集成扩音防啸叫、AI ENC 降噪、AE…...

MAX30102血氧传感器避坑指南:如何解决I2C信号干扰问题(附Arduino代码)

MAX30102血氧传感器实战&#xff1a;I2C信号干扰的深度解析与解决方案 当你在深夜调试MAX30102传感器时&#xff0c;突然发现心率数据频繁跳变——这可能是I2C信号干扰在作祟。作为一款高精度光学传感器&#xff0c;MAX30102在医疗级血氧监测和心率检测中表现出色&#xff0c;但…...

OpenCV实战:用Python+SIFT+八点算法搞定双目视觉匹配(附完整代码)

OpenCV实战&#xff1a;PythonSIFT八点算法实现双目视觉精准匹配 在计算机视觉领域&#xff0c;立体匹配是一个经典而富有挑战性的问题。想象一下&#xff0c;当你用双眼观察世界时&#xff0c;大脑能自动计算出物体的距离——这正是双目视觉系统要模拟的过程。本文将带你用Pyt…...

RustFS集群部署避坑指南:我用Ansible踩过的3个坑及解决方案

RustFS集群部署实战&#xff1a;Ansible自动化中的三大典型问题与深度解决方案 当你在凌晨三点收到集群告警通知时&#xff0c;会不会希望当初的部署方案能更健壮些&#xff1f;作为经历过数十次生产环境部署的老兵&#xff0c;我想分享那些官方文档不会告诉你的实战经验。本文…...

string字符串基础相关知识

课程要求1.string的三种创建方式2.string常用方法空格处理&#xff0c;空值判断&#xff0c;替换操作&#xff0c;字符串截取&#xff0c;字符串拆分&#xff0c;字符索引访问拼接与性能&#xff0c;删除操作3.理解 string 不可变性&#xff0c;能在循环拼接场景中使用 StringB…...

OpenClaw+百川2-13B:个人知识库自动整理与问答系统搭建

OpenClaw百川2-13B&#xff1a;个人知识库自动整理与问答系统搭建 1. 为什么需要本地化知识管理系统 去年整理博士论文资料时&#xff0c;我遇到了一个典型的研究者困境&#xff1a;电脑里堆积了237个PDF、643篇网页存档和无数零散的笔记片段&#xff0c;但需要引用某个概念时…...

工业自动化实战:三大品牌伺服驱动器IO与串口引脚接线全解析

1. 伺服驱动器接线基础&#xff1a;为什么IO与串口引脚如此重要 第一次接触伺服驱动器时&#xff0c;我被密密麻麻的接线端子吓到了。后来才发现&#xff0c;只要理解几个核心引脚的功能&#xff0c;剩下的都是举一反三。伺服驱动器的IO和串口引脚就像机器的"神经系统&quo…...

ECharts Geo Regions 进阶:自定义地图省份边界与区域样式的实战技巧

1. 理解ECharts中的geo.regions属性 ECharts作为一款强大的数据可视化工具&#xff0c;其地图组件在展示地理信息数据时尤为出色。在实际项目中&#xff0c;我们经常需要对特定省份或区域进行个性化样式设置&#xff0c;这时候geo.regions属性就派上用场了。这个属性允许我们对…...

摆脱论文困扰!高效论文写作全流程AI论文写作软件推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;2026年AI论文写作软件按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景…...