Longest Palindromic Substring最长回文子串-Manacher算法
Manacher算法主要就是用来寻找字符串中的回文子串。
假设目标字符串是abbaca, 在空隙插值#得到新字符串s#a#b#b#a#c#a#。
假设当前找到的一个回文串,中心坐标是c, 半径是range(包含自己), 最右边界坐标是r=c+range-1,
那么在s[c-range+1...c)和s(c...c+range-1] (s(c...r])中的点对称的。
设p[i]表示以i为中心的最长回文半径,比如p[c]=range。
当i在s(c...c+range-1] 范围内时,在s[c-range+1...c)中镜像坐标为mirror=c*2-i,
此时有两种情况
- mirror-p[mirror]+1 > c-range+1,这样说明以mirror为中心的最大回文子串,整个范围都在c之内,根据对称性,以i为中心的最大回文子串也在c范围内,故可以直接p[i]=p[mirror]。
- mirror-p[mirror]+1 < c-range+1,此时mirror的左边界超过了c的左边界,当利用c的对称性时,必须舍弃超过左边界的范围,此时p[i]=mirror-c的左边界=c的右边界-i作为初始值,之后再继续计算边界外并更新p[i],直到找到i的边界。
public String longestPalindrome(String s) {StringBuilder sb = new StringBuilder(s.length() * 2 + 1);int n = s.length() * 2 + 1;for (int i = 0; i < s.length(); i++) {sb.append('#');sb.append(s.charAt(i));}char[] t = sb.append('#').toString().toCharArray();int[] p = new int[n];int c = 0;int r = 0;int maxIndex = 0;int maxR = 1;for (int i = 0; i < n; i++) {int mirror = c * 2 - i;if (i < r) {p[i] = Math.min(p[mirror], r - i);}while (i - p[i] >= 0 && i + p[i] < n && t[i - p[i]] == t[i + p[i]]) {p[i]++;}if (p[i] > maxR) {maxR = p[i];maxIndex = i;}}sb.setLength(0);for (int i = maxIndex - p[maxIndex] + 1; i < maxIndex + p[maxIndex] - 1; i++) {if (t[i] != '#') {sb.append(t[i]);}}return sb.toString();}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970402.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
[20251113]建立完善fffext.sh脚本.txt
[20251113]建立完善fffext.sh脚本.txt--//以前写过一个通过bbed查看数据块的bash shell脚本,别人使用发现存在问题。$ . fffext.sh 9 225 225 15 ncnnnnnnnnnnnnnnnnncct| head -40|SYSTEM|0|1|128|0|0|0|0|0|3|0||||…
ubuntu25 win11 双系统 和一些常用配置
UEFI 双系统 只有一个硬盘的情况:
磁盘分2个分区,先安装 win11 ,会自动创建 EFI 分区和恢复分区和主分区,安装完成后在安装 ubuntu25 ,因为 从 25版本开始,可以自定义安装 EFI 到指定分区,以前的老版本都不行。…
解码线程调度与信号响应
Linux 线程调度策略
调度核心概念
线程是 Linux 系统调度的最小单位,进程作为线程的容器,可包含一个或多个线程。Linux 内核采用抢占式调度机制:高优先级线程可抢占正在运行的低优先级线程的 CPU 使用权;同优先级线…
LEANN:一个极简的本地向量数据库
在软件开发领域,提到轻量级、嵌入式的本地数据库,我们首先会想到 SQLite,它快速且无需独立服务进程。现在检索增强生成(RAG)和向量数据库的世界里,一个定位相似的新工具出现了。你可以把LEANN看作是嵌入式、轻量…
extern C的深入理解
cpp文件调用了 .c 文件的函数,对于单独的.c/.h 这样一对的文件, 可以在.h文件中写明 extern “C”, 但是不需要在 .c 中写明?
答:
不完全正确(所以你的理解基本正确,但需要加上条件编译这个关键条件!), 这是…
详细介绍:技术人互助:城市级充电系统(Java 微服务)的落地细节,含 demo 和设备适配经验
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
XPath表达式解析与应用
本篇内容来自AI的解读,用于后续温习回顾xpath的使用$x("//div[@class=ec-accordion and (./div[@class=ec-accordion-title and ./span[text()=Prerequisites]])]")
各部分含义:(1) //div - 选择文档中所有…
2025中国防晒品牌榜出炉!按肤质/场景选!
2025中国防晒品牌榜出炉!按肤质/场景选!宝子们!夏天防晒选不对,再贵的护肤品都白费~其实选防晒的核心超简单:看肤质+看场景,没有“万能款”!今天整理了2025年天猫618热卖榜、亚洲皮肤健康联盟口碑榜的权威推荐…
linux ftp使用
在 Linux 系统中,ftp 是一个用于通过 FTP 协议进行文件传输的命令行工具。它通常用于与远程服务器进行交互,例如上传或下载文件。? 一、使用 ftp 的基本命令
1. 连接 FTP 服务器
ftp <hostname><hostname&…
linux ftp代码
在 Linux 系统中,ftp 命令行工具是用于与 FTP 服务器进行交互的常用工具。它本身是一个命令行 FTP 客户端,但需要注意的是,ftp 已在大多数现代 Linux 发行版中被弃用,推荐使用 vsftpd(FTP 服务器)或 lftp(更现代…
linux ftpgt;put
你提到的 ftp>put 是 FTP(File Transfer Protocol) 命令行工具中的一个命令,用于在 FTP 客户端 中上传文件。? 一、ftp 命令行工具简介
ftp 是 Linux/Unix 系统中用于通过 FTP 协议 与远程服务器进行文件传输的…
2025-11-19
CF
Problem - 1418C - Codeforces(dp+贪心好题!)(1500)
dp操作,要分开判断先手和后手
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL mod = 998244353;
const int N=2e5+…
docker 自用手册
问题
用id删除镜像,报错Error response from daemon: No such image: 15e:latest
原因就在于,我也不知道。其他镜像并没有以15e开头,反正不知道为什么。
但是解决办法就是,多输几位ID,实在不行就直接名称删除。我…
Gemini 3发布与小试牛刀
Gemini 3发布与小试牛刀Google Gemini 3 技术范式与生态系统深度研究报告发布日期:2025年11月Gemini 3 架构特性、多模态推理能力、智能体式开发环境(Antigravity)与市场竞争格局分析1. 引言:从对话智能到代理智能…
落山基唬人队 第二次团队作业——原型设计+概要设计
这个作业属于哪个课程
https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里
https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13559这个作业的目标
原型设计+概…
kilocode_idea端测试
kilo code 4.113.1
大模型 glm4.6
用HTML、CSS和JavaScript(若更偏好p5.js也可选用),创建一个带有动画效果的天气卡片。要在卡片里呈现当前温度、具体位置以及天气状况,像晴天、雨天、多云这些常见天气类型都要覆盖。…
【触想智能】工业一体机在户外使用要注意的问题分享
工业一体机是一种集成了计算机、显示器、触摸屏和其他功能的设备,广泛应用于各种工业领域,包括制造业、物流、交通管理等。由于其强大的性能和可靠性,工业一体机在户外环境中的使用成为一种趋势。触想工业一体机TPC…
#20232329 2025-2026-1 《网络与系统攻防技术》实验八实验报告
#20232329 2025-2026-1 《网络与系统攻防技术》实验八实验报告1.实验内容
1)Web前端HTML:能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
2)Web前端javascipt:理解Jav…