Leetcode5--最长回文子串(双指针中心扩散法)

题目

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成

 解析

题目要求是找到正着念和反着念都相同的字串,那么有两种解决方式。

  • 从两边到中间聚集
  • 从中间到两边扩散

如果从两边到中间聚集,我们是没有办法确定,两边的边界在哪里,互相对应的边界是什么的。而从中间到两边扩散的话,只需要遍历各个节点,然后依次向两边扩散遍历即可,所以这道题的思路可以选择从中间到两边扩散。

当我们遇到左右边界对应的节点不相等的时候,结束当前节点作为中心节点即可。然后更新res(结果)的值。每个位置向两边扩散都会出现一个窗口大小(len)。如果 len>maxLen(用来表示最长回文串的长度)。则更新 maxLen 的值。并且因为最后要返回的是字串,而不是长度,所以最后还需要记录left,right的位置,截取字符串,然后返回。

代码

class Solution {public String longestPalindrome(String s) {String res = "";for(int i = 0;i< s.length();i++){//奇数形式,以一个字符为中心String s1 = palindrome(s,i,i);//偶数形式,以两个字符为中心String s2 = palindrome(s,i,i+1);res = res.length() > s1.length()?res:s1;res = res.length() > s2.length()?res:s2;}return res;}String palindrome(String s,int left,int right){//防止越界,并且向两边扩散的条件s.charAt(left)==s.charAt(right)while(left >= 0&&right<s.length()&&s.charAt(left)==s.charAt(right)){left--;right++;}// 返回以 s[l] 和 s[r] 为中心的最长回文串return s.substring(left+1,right);}}

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

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

相关文章

【应用】Spring-Bean注入-xml+注解

Bean注入 | xml配置文件 Bean配置 别名配置 <!--设置别名&#xff1a;在获取Bean的时候可以使用别名获取&#xff0c;原名依旧可用--> <alias name"userT" alias"userNew"/><!--bean就是java对象,由Spring创建和管理--><!--id 是b…

SQL Server详细使用教程

SQL Server 是 Microsoft 公司开发的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储和检索数据。以下是 SQL Server 的详细使用教程&#xff1a; 目录 1. 安装 SQL Server 2. 连接到 SQL Server 3. 创建数据库 4. 创建数据表 5. 插入数据 6. 查…

中图分类法的正则表达式参考

文章目录 1. 中图分类法2. 正则表达式3. 使用方法4. 参考 1. 中图分类法 中图分类法&#xff0c;全称为《中国图书馆图书分类法》&#xff0c;简称《中图法》&#xff0c;是中国国内普遍采用的一种图书分类体系&#xff0c;用于组织和管理图书馆藏书&#xff0c;方便读者查找和…

Axure实现导航栏的展开与收缩

Axure实现导航栏的展开与收缩 一、概要介绍二、设计思路三、Axure制作导航栏四、技术细节五、小结 一、概要介绍 使用场景一般是B端后台系统需要以导航栏的展开与收缩实现原型的动态交互&#xff0c;主要使用区域是左边或者顶部的导航栏展开与收缩&#xff0c;同一级导航下的小…

MySQL-09-mysql 存储过程入门介绍

拓展阅读 MySQL 00 View MySQL 01 Ruler mysql 日常开发规范 MySQL 02 truncate table 与 delete 清空表的区别和坑 MySQL 03 Expression 1 of ORDER BY clause is not in SELECT list,references column MySQL 04 EMOJI 表情与 UTF8MB4 的故事 MySQL 05 MySQL入门教程&a…

Android 自定义SwitchPreference

1. 为SwitchPreference 添加背景&#xff1a;custom_preference_background.xml <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item><shape android:s…

03-JAVA设计模式-组合模式

组合模式 什么是组合模式 组合模式&#xff08;Composite Pattern&#xff09;允许你将对象组合成树形结构以表示“部分-整体”的层次结构&#xff0c;使得客户端以统一的方式处理单个对象和对象的组合。组合模式让你可以将对象组合成树形结构&#xff0c;并且能像单独对象一…

mongodbTemplate 修改JSON [key: ‘1‘, key2: [{id:1, name: ‘name‘}] 中 key2.name属性

问题描述 mongodbTemplate 修改JSON [key: ‘1‘, key2: [{id:1, name: ‘name‘}] 中 key2.name属性 代码 Query query Query.query(Criteria.where("key").is(1) .and("key2.id").is(1) …

python基础——类型注解【变量,函数,Union】

&#x1f4dd;前言&#xff1a; 上一篇文章Python基础——面相对象的三大特征提到&#xff0c;python中的多态&#xff0c;python中&#xff0c;类型是动态的&#xff0c;这意味着我们不需要在声明变量时指定其类型。然而&#xff0c;这可能导致运行时错误&#xff0c;因为我们…

Win10系统VScode远程连接VirtualBox安装的Ubuntu20.04.5

1.打开虚拟机&#xff0c;在中端中输入命令: sudo apt-get install openssh-server 安装ssh 我这里已经安装完成&#xff0c;故显示是这样 2.输入命令&#xff1a;sudo systemctl start ssh 启动远程连接 注意&#xff0c;如果使用VirtualBox安装的虚拟机&#xff0c;需要启用…

Jmeter03:直连数据库

1 Jmete组件&#xff1a;直连数据库 1.1 是什么&#xff1f; 让Jmeter直接和数据库交互 1.2 为什么&#xff1f; 之前是通过接口操作数据库&#xff0c;可能出现的问题&#xff1a;比如查询可能有漏查误查的情况&#xff0c;解决方案是人工对不&#xff0c;效率低且有安全隐患…

Spring核心容器总结

2.2 核心容器总结 2.2.1 容器相关 BeanFactory是IoC容器的顶层接口&#xff0c;初始化BeanFactory对象时&#xff0c;加载的bean延迟加载 ApplicationContext接口是Spring容器的核心接口&#xff0c;初始化时bean立即加载 ApplicationContext接口提供基础的bean操作相关方法…

了解 Unity AI:从初学者到高级的综合指南

游戏中的AI是什么? 游戏中的人工智能是指利用人工智能技术使视频游戏中的非玩家角色和实体智能地行动、做出决策、对游戏环境做出反应,并提供引人入胜的动态游戏体验。什么是NPC? NPC 代表“非玩家角色”。NPC 是视频游戏、角色扮演游戏中不受人类玩家控制的角色。它们是计算…

Springboot+Vue项目-基于Java+MySQL的蜗牛兼职网系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

道可云元宇宙每日资讯|中国天文新突破:大模型首次接入天文望远镜

道可云元宇宙每日简报&#xff08;2024年4月16日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 中国天文新突破&#xff1a;大模型首次接入天文望远镜 4月14日&#xff0c;中国科学院国家天文台人工智能工作组发布新一代天文大模型“星语3.0”。“星语3.0”基于…

Pytest精通指南(01)介绍与基本使用

文章目录 Pytest 简介Pytest 官网Pytest 核心Pytest 原理Pytest 用途Pytest 特点Pytest 安装Pytest 编写测试用例规则Pytest 编写第一条测试用例用例代码示例可执行测试执行一条测试执行多条测试 Pytest 运行方式run模式pytest模式run模式扩展命令行模式 Pytest.main()常用命令…

【Golang】并发编程之三大问题:原子性、有序性、可见性

目录 一、前言二、概念理解2.1 有序性2.2 原子性后果1&#xff1a;其它线程会读到中间态结果&#xff1a;后果2&#xff1a;修改结果被覆盖 2.3 可见性1&#xff09;store buffer(FIFO)引起的类似store-load乱序现象2&#xff09;store buffer(非FIFO)引起的类似store-store乱序…

Open实现点云的平移、旋转、缩放

一、代码 Python import open3d as o3d import numpy as npdef rotate_pointcloud(pointcloud, degree, axis):radian = np.radians(degree)if axis == 0:restore = pointcloud.get_rotation_matrix_from_xyz((radian, 0, 0))pointcloud.rotate(restore, center=(0, 0, 0))el…

太阳能智能语音卡口:环保与智能的完美结合/恒峰智慧科技

随着科技的飞速发展&#xff0c;我们的生活正在经历前所未有的变革。在这场变革中&#xff0c;太阳能智能语音卡口以其独特的魅力&#xff0c;成为环保与智能的完美结合&#xff0c;为我们的生活带来了更多的便捷和环保。 太阳能智能语音卡口&#xff0c;顾名思义&#xff0c;是…

React-hooks:useRef

useRef文档 useRef 是一个ReactHook&#xff0c;它能帮助引用一个不需要渲染的值。 const ref useRef(initialValue)参数 initialValue&#xff1a;ref对象的 current 属性的初始值&#xff0c;可以是任意类型的值&#xff0c;这个参数在首次渲染后被忽略。 返回值 useRe…