news 2026/6/10 14:03:23

C++求最长回文子串——Manacher(马拉车)算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++求最长回文子串——Manacher(马拉车)算法

一、问题背景

求最长回文子串(长度),数据规模超大时唯一可行的O(n)算法

二、Manacher 的核心思想

利用回文的对称性,避免重复扩展,从而把所有扩展操作压缩到 O(n)。

三、关键技巧 1:统一奇偶回文

原串: a a a b b a c 处理后:^# a # a # a # b # b # a # c # $

好处:
所有回文长度统一为“奇数”;回文中心永远是一个字符;始末特殊字符避免扩展时超出边界。

四、关键技巧 2:回文半径数组 p[]

p[i] 表示:以 i 为中心,向左右能扩展的最大半径,即为去掉填充字符后回文串的长度。

五、关键变量(运行时维护)

center:当前最右回文的中心
right :该回文能覆盖到的最右端位置
始终满足:

right=center+p[center]

六、Manacher 的核心步骤

对每个位置 i:
① 计算对称点mirror = 2 * center - i

② 初始化 p[i]
如果 i < right:p[i] = min(right - i, p[mirror])
否则:p[i] = 0

③ 尝试继续向两边扩展

while(t[i+p[i]+1]==t[i-p[i]-1])p[i]++;

④ 更新最右回文

if(i+p[i]>right){center=i;right=i+p[i];}

最长回文子串长度 = max(p[i])

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:36:35

Elasticvue:浏览器端Elasticsearch可视化管理工具完整指南

Elasticvue&#xff1a;浏览器端Elasticsearch可视化管理工具完整指南 【免费下载链接】elasticvue Elasticsearch gui for the browser 项目地址: https://gitcode.com/gh_mirrors/el/elasticvue 在当今数据驱动的时代&#xff0c;Elasticsearch已成为众多企业和开发者…

作者头像 李华
网站建设 2026/6/10 11:42:55

N_m3u8DL-RE终极教程:如何轻松下载任何加密流媒体内容

N_m3u8DL-RE终极教程&#xff1a;如何轻松下载任何加密流媒体内容 【免费下载链接】N_m3u8DL-RE 跨平台、现代且功能强大的流媒体下载器&#xff0c;支持MPD/M3U8/ISM格式。支持英语、简体中文和繁体中文。 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3u8DL-RE …

作者头像 李华
网站建设 2026/5/23 10:25:12

Escrcpy:重新定义Android投屏体验的高效镜像工具

Escrcpy&#xff1a;重新定义Android投屏体验的高效镜像工具 【免费下载链接】escrcpy &#x1f4f1; Graphical Scrcpy to display and control Android, devices powered by Electron. | 使用图形化的 Scrcpy 显示和控制您的 Android 设备&#xff0c;由 Electron 驱动。 项…

作者头像 李华
网站建设 2026/6/10 13:46:23

制造业设备手册查询:基于anything-llm的现场支持系统

制造业设备手册查询&#xff1a;基于anything-LLM的现场支持系统 在一家中型机械制造厂的车间里&#xff0c;一名年轻的技术员正面对一台突然停机的CNC加工中心束手无策。报警代码闪烁&#xff0c;但他翻遍随附的三本PDF手册也找不到匹配说明。过去&#xff0c;这种情况往往意味…

作者头像 李华
网站建设 2026/6/9 23:41:34

技术教程文章创作专业指南

技术教程文章创作专业指南 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mirrors/ap/Apple-Mobile-Drivers-Installe…

作者头像 李华