马拉车算法 Manacher
马拉车算法 Manacher
具体分析:博客园 - BIT祝威
代码实现 - Manacher
class Solution {public String longestPalindrome(String s) {// 特殊情况排除if (s == null || s.isEmpty()) {return "";}String t = transform(s);int[] p = new int[t.length()];// 中心位置int C = 0;// 右边界int R = 0;// 回文串最大半径int maxLen = 0;// 最长回文串对应中心int pos = 0;for (int i = 0; i < t.length(); i++) {// i关于C的对称点int j = 2 * C - i;// 分三种情况进行赋值p[i] = R >= i ? Math.min(p[j], R - i) : 0;// 回文半径可增加的情况while (i + p[i] + 1 < t.length() && i - p[i] - 1 >= 0 && t.charAt(i + p[i] + 1) == t.charAt(i - p[i] - 1)) {p[i]++;}if (p[i] > maxLen) {maxLen = p[i];pos = i;}// 更新中心点和右边界if (i + p[i] > R) {C = i;R = i + p[i];}}int left = (pos - maxLen) / 2;int right = (pos + maxLen - 1) / 2;return s.substring(left, right + 1);}// 字符串转换public String transform(String s) {StringBuilder builder = new StringBuilder();for (int i = 0; i < s.length(); i++) {builder.append('#').append(s.charAt(i));}builder.append('#');return builder.toString();}
}
马拉车算法 Manacher相关推荐
- 最长回文 HDU - 3068(求最长回文串的长度【马拉车算法Manacher】)
马拉车算法 Manacher's Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫 Manacher 的人在 1975 年发明的,这个方法的最大贡献是在于将时间复杂度提升到了 ...
- leetcode 5. 最长回文子串 暴力法、中心扩展算法、动态规划,马拉车算法(Manacher Algorithm)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000.示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...
- Manacher's Algorithm 马拉车算法(最长回文串)
这个马拉车算法Manacher's Algorithm是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性,这 ...
- Manacher Algorithm马拉车算法详解
Manacher Algorithm马拉车算法详解 链接:https://www.zhihu.com/question/37289584/answer/465656849 中心扩展算法 我们先来看一个 ...
- manacher算法详解(马拉车算法)
马拉车算法 Manacher算法是由题目"求字符串中最长回文子串的长度"而来.比如 abcdcb 的最长回文子串为 bcdcb ,其长度为5. 回文:正着念,反着念都一样 暴力解不 ...
- Manacher's Algorithm 马拉车算法
转自:https://www.cnblogs.com/grandyang/p/4475985.html 这个马拉车算法Manacher's Algorithm是用来查找一个字符串的最长回文子串的线性方 ...
- 最长回文子串(多种解法,附马拉车算法)
目录 •写在前面 •题目 •解法一 暴力破解 •解法二 暴力优化 •解法三 最长公共子串(动态规划整体) •解法四 中心扩展法 •解法五 马拉车算法 •结束 •写在前面 这种类型的题目算是比 ...
- 【HDU - 3068】最长回文(Manacher算法,马拉车算法求最长回文子串)
题干: 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组 ...
- 字符串-Manacher算法(你知道马拉车算法吗?)
文章目录 原理 奇偶问题 p[]数组 马拉车求p[] 模板 例题 P3805 [模板]manacher算法 P1659 拉拉队排练 原理 马拉车算法当然不是马拉着车的奇奇怪怪的东西,是Manacher ...
最新文章
- [建筑可视化]Evermotion-Archinteriors for UE4
- centos6.2系统使用扩展源epel报错问题解决方法
- 设计模式 原型模式_原型设计模式:创建另一个小车
- hbase1.3版本启动流程及优化
- switch -case 理解
- Qt + 运动控制 (固高运动控制卡)【1】环境准备,框架搭建
- 罗克韦尔Studio5000遇上西门子Process Simulate:数字化仿真与虚拟调试案例
- 手机代理上网_华为、荣耀手机安装GooglePlay的方法
- H3C认证网络工程师H3CNE
- educoder:实验十一 函数
- 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容
- java之本周、上周、开始、结束时间
- 同步异步+阻塞非阻塞-三述
- iOS性能测试怎么做?这款工具轻松稿定
- Ubuntu支持LinuxONE大型机:为云而生的强强新组合
- 实现电脑文件自动同步到FTP
- android 环信客服修改自己的头像
- Spring Boot的优点
- Android -- 屏幕适配之dimens适配
- python自动化测试学习笔记合集二
热门文章
- UIColor 中提取 RGBA
- 协议分析---HTTP协议和DNS协议
- 小学新学期班务工作计划
- 贝佐斯:管理亚马逊的20条经营理念
- 浅谈Java中final,finalized,finally
- 思科 计算机网络 第二章测试答案
- java安装心得_JAVA实验环境搭建与实验心得
- 教育部实锤:196所高校获批大数据相关专业
- 服务器获取用户信息失败是什么原因,花粉俱乐部获取用户信息失败怎么解决?花粉俱乐部登录失败是什么原因?...
- A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)