LeetCode刷题之HOT100之最长回文串

2024/5/28 大家上午好啊,我又来做题了

1、题目描述

在这里插入图片描述

2、逻辑分析

题目要求找出最长的回文子串。我回去看了一下回文数字和回文链表这两道题。这个题目的思想其实跟以上两题也差不多,但是结合了最长子串这一概念。那么怎么解决这个题目呢?那么我给出的建议就是先看题解。官方给出了三种解题方法:动态规划、中心扩展算法和Manacher算法。那么先从第一种方法动态规划开始吧。

动态规划:对于一个子串而言,如果它是回文串,并且长度大于 222,那么将它首尾的两个字母去除之后,它仍然是个回文串。例如对于字符串 “ababa”,如果我们已经知道 “bab” 是回文串,那么 “ababa”一定是回文串,这是因为它的首尾两个字母都是 “a”。那么借助这个算法思想,即可做出解答。

3、代码演示

public String longestPalindrome(String s) {  // 获取字符串s的长度  int n = s.length();  // 创建一个二维布尔数组dp,用于记录从i到j的子串是否为回文串  boolean[][] dp = new boolean[n][n];  // 初始化dp数组  // 单个字符一定是回文串  for(int i = 0 ; i < n ; i++){  dp[i][i] = true;  // 如果相邻的两个字符相等,那么它们组成的子串也是回文串  if(i + 1 < n) dp[i][i + 1] = (s.charAt(i) == s.charAt(i + 1)); // 这里修正为i+1,而不是i+1][i  }   // 初始化最长回文子串的起始和结束索引  int begin = 0, end = 0;  // 从长度为2的子串开始检查,直到整个字符串  for(int l = 2; l <= n; l++){  // 遍历所有可能的子串起始位置  for(int i = 0; i < n; i++){  // 计算当前子串的结束位置  int j = i + l - 1;  // 如果结束位置超出了字符串的范围,则跳出当前循环  if(j >= n){  break;  }  // 更新dp[i][j]的值,基于两个条件:1. s[i] == s[j];2. 子串s[i+1...j-1]也是回文串  dp[i][j] = dp[i + 1][j - 1] && s.charAt(i) == s.charAt(j);  // 如果当前子串是回文串,并且它的长度比之前记录的最长回文子串更长,则更新最长回文子串的起始和结束索引  if(dp[i][j] && l > end - begin + 1){  begin = i;  end = j;  }  }  }    // 根据记录的起始和结束索引,返回最长回文子串  return s.substring(begin, end + 1);  
}

时间复杂度:O(nn),空间复杂度:O(nn)。

后面的两种方法就不看了,BYE

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark Sql写代码方式(yarn)以及 spark sql整合hive详解

引入部分&#xff1a;通常我们在IDEA中写spark代码中如果设置了loacl参数&#xff0c;基本都是在IDEA本地运行&#xff0c;不会提交到 standalone或yarn上运行&#xff0c;在前几篇文章中写的大多数都是该种形式的spark代码&#xff0c;但也写到了如何将spark代码提交到standal…

【VTKExamples::Utilities】第六期 DataAnimation

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例DataAnimation,并解析接口vtkProgrammableFilter,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U…

Windows远程桌面是什么?

Windows远程桌面是一种远程桌面协议&#xff0c;允许用户通过网络连接到远程Windows计算机&#xff0c;并在本地操作远程计算机。它为用户提供了访问远程计算机的便利性&#xff0c;可以在不同地区的电脑或设备之间进行信息远程通信。 天联解决方案 在远程桌面技术中&#xff…

数独游戏详解(附有Python详细代码)

数独游戏是一种源自18世纪末欧洲的逻辑谜题游戏,在20世纪初在美国获得了广泛的流行。它的规则简单明了,但要解决一个困难的数独游戏实际上是一个NP完全的问题,需要采用各种算法和启发式方法来有效地解决。因此,数独游戏不仅是一种有趣的益智游戏,也是一个非常有价值的数学问题,…

LINUX中给mysql设置环境变量

在 CentOS 和许多其他基于 Red Hat 的 Linux 发行版中&#xff0c;~/.bashrc 是一个 bash shell 的配置文件&#xff0c;用于存储特定于用户的 shell 初始化命令。当您启动一个新的 bash shell&#xff08;例如&#xff0c;打开一个新的终端窗口或标签页&#xff09;时&#xf…

python项目开发——简易图书管理系统

项目名称&#xff1a;简易图书管理系统 项目简介 开发一个简单的图书管理系统&#xff0c;帮助用户记录和管理图书信息。该系统应具备添加图书、查看图书、搜索图书、更新图书信息和删除图书等基本功能&#xff0c;并将数据存储在文件中。 项目需求 1. 用户界面 提供简易的…

uniapp+h5 ——微信小程序页面截屏保存在手机

web-view 需要用到 web-view &#xff0c;类似于iframe&#xff0c; 将网页嵌套到微信小程序中&#xff0c;参数传递等&#xff1b; 示例&#xff08;无法实时传递数据&#xff09;&#xff0c;页面销毁时才能拿到h5传递的数据&#xff0c;只能利用这点点击跳转到小程序另一个…

制作ARM架构 docker镜像

docker简介 docker客户端 Docker 客户端有两种替代选项:名为 docker 的命令行应用程序或名为 Docker Desktop 的基于图形用户界面 (GUI) 的应用程序。 CLI 和 Docker Desktop 均与 Docker 服务器交互。 来自 CLI 或 Docker Desktop 的 docker 命令使用 Docker REST API 将指…

KAN(Kolmogorov-Arnold Network)的理解 1

系列文章目录 第一部分 KAN的理解——数学背景 文章目录 系列文章目录前言KAN背后的数学原理&#xff1a;Kolmogorov-Arnold representation theorem 前言 这里记录我对于KAN的探索过程&#xff0c;每次会尝试理解解释一部分问题。欢迎大家和我一起讨论。 KAN tutorial KAN背…

NVIDIA AGX Orin/Jetson 平台+GMSL 车载AI视觉方案——索尼车载1700万超高像素前视摄像头

推出“1700万超高像素前视摄像头”以及基于该摄像头的“智驾超级视觉5V方案”&#xff0c;该摄像头采用索尼1700万像素IMX735车载图像传感器&#xff0c;搭载水平120度超大广角镜头和出色的超高速传输技术&#xff0c;是行业革命性创新产品&#xff0c;在车展上备受关注。 索尼…

mysql实战——mysql5.7保姆级安装教程

1、上传 上传5.7压缩包到/usr/local目录下 2、解压 cd /usr/local tar -zxvf mysql--5.7.38-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.38-linux-glibc2.12-x86_64/ mysql 3、创建mysql用户组和用户 groupadd mysql useradd -g mysql mysql 4、创建数据目录data&#xf…

git冲突

git冲突的产生&#xff1a; 首先用户A新建一个文件conflict&#xff0c;并在里面添加内容 然后通过add,commit,push将该文件上传到远端仓库 然后用户B通过pull将程序拉下来之后&#xff0c;也在这个文档里面进行编辑&#xff0c;并且内容不一样 如果这个时候其中一个人push&…

从alpine构建预装vcpkg的docker image用于gitea actions CI

动机 想要构建一个基于vcpkg的交叉编译容器平台用于cpp项目的CI&#xff08;自动集成&#xff09;&#xff0c;此处仅提供最基础的image&#xff0c;amd64的机子上构建完成后大小为533兆&#xff08;着实不小&#x1f613;&#xff09;&#xff0c;各位看官可以在此基础上自行…

Python库之PyQuery的简介、安装、使用方法详细攻略

Python库之PyQuery的简介、安装、使用方法详细攻略 简介 PyQuery是一个Python库&#xff0c;它提供了一种类似于jQuery的方式来解析和操作HTML文档。jQuery是一个广泛使用的JavaScript库&#xff0c;它简化了HTML文档的遍历、操作、事件处理等操作。PyQuery使得在Python中处理…

产品公告 | MemFire Cloud认证服务支持微信扫码登录

前言 为了满足国内用户日益增长的操作习惯需求&#xff0c;并进一步提升用户体验&#xff0c;MemFire Cloud认证服务已集成微信扫码登录功能。微信&#xff0c;作为国内广受欢迎的社交平台&#xff0c;其扫码登录功能以其便捷性和快速性赢得了广大用户的青睐。现在&#xff0c…

SQL 语言:完整性约束

文章目录 概述主键 ( Primary Key ) 约束外键&#xff08;Foreign Key&#xff09;约束属性值上的约束全局约束总结 概述 数据库的完整性是指数据库正确性和相容性&#xff0c;是防止合法用户使用数据库时向数据库加入不符合语义的数据。保证数据库中数据是正确的&#xff0c;…

不可变且透明地建模数据 - 面向数据编程 v1.1

以不变且透明的方式对数据进行建模是面向数据编程的四大原则之一。我们将探讨为何不变性和透明性在数据建模时如此重要&#xff0c;以及如何使用 Java 的功能&#xff08;尤其是记录&#xff08;Record&#xff09;&#xff09;来实现这一点。 1.不变性和透明度 软件错误的一…

pytorch_trick(4) 模型本地保存与读取方法

模型本地保存与读取方法 同时&#xff0c;借助state_dict()方法&#xff0c;我们可以实现模型或优化器的本地保存于读取。此处以模型为例&#xff0c;优化器的本地保存相关操作类似。   对于模型而言&#xff0c;其实也有state_dict()方法。通过该方法的调用&#xff0c;可以…

2024年03月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 运行如下代码,若输入整数3,则最终输出的结果为?( ) def f(x):if x==1:s=1else:s

记录关联(笛卡尔积)——kettle开发24

一、记录关联(笛卡尔积) 记录关联就是对两个数据流进行笛卡尔积操作。如下图所示&#xff0c;我们有两组数据分别为aaa和bbb,笛卡尔积后我们生成了4种结果&#xff0c;即2*24条记录。 记录关联(笛卡尔积)需要注意的是我们需要指定一个主步骤。即参考基准的数据 &#xff1a; 二…