马拉车算法 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相关推荐

  1. 最长回文 HDU - 3068(求最长回文串的长度【马拉车算法Manacher】)

    马拉车算法 Manacher's Algorithm 是用来查找一个字符串的最长回文子串的线性方法,由一个叫 Manacher 的人在 1975 年发明的,这个方法的最大贡献是在于将时间复杂度提升到了 ...

  2. leetcode 5. 最长回文子串 暴力法、中心扩展算法、动态规划,马拉车算法(Manacher Algorithm)

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000.示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...

  3. Manacher's Algorithm 马拉车算法(最长回文串)

    这个马拉车算法Manacher's Algorithm是用来查找一个字符串的最长回文子串的线性方法,由一个叫Manacher的人在1975年发明的,这个方法的最大贡献是在于将时间复杂度提升到了线性,这 ...

  4. Manacher Algorithm马拉车算法详解

    Manacher Algorithm马拉车算法详解 链接:https://www.zhihu.com/question/37289584/answer/465656849 中心扩展算法 我们先来看一个 ...

  5. manacher算法详解(马拉车算法)

    马拉车算法 Manacher算法是由题目"求字符串中最长回文子串的长度"而来.比如 abcdcb 的最长回文子串为 bcdcb ,其长度为5. 回文:正着念,反着念都一样 暴力解不 ...

  6. Manacher's Algorithm 马拉车算法

    转自:https://www.cnblogs.com/grandyang/p/4475985.html 这个马拉车算法Manacher's Algorithm是用来查找一个字符串的最长回文子串的线性方 ...

  7. 最长回文子串(多种解法,附马拉车算法)

    目录 •写在前面 •题目 •解法一  暴力破解 •解法二  暴力优化 •解法三  最长公共子串(动态规划整体) •解法四  中心扩展法 •解法五  马拉车算法 •结束 •写在前面 这种类型的题目算是比 ...

  8. 【HDU - 3068】最长回文(Manacher算法,马拉车算法求最长回文子串)

    题干: 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.  回文就是正反读都是一样的字符串,如aba, abba等 Input 输入有多组case,不超过120组 ...

  9. 字符串-Manacher算法(你知道马拉车算法吗?)

    文章目录 原理 奇偶问题 p[]数组 马拉车求p[] 模板 例题 P3805 [模板]manacher算法 P1659 拉拉队排练 原理 马拉车算法当然不是马拉着车的奇奇怪怪的东西,是Manacher ...

最新文章

  1. [建筑可视化]Evermotion-Archinteriors for UE4
  2. centos6.2系统使用扩展源epel报错问题解决方法
  3. 设计模式 原型模式_原型设计模式:创建另一个小车
  4. hbase1.3版本启动流程及优化
  5. switch -case 理解
  6. Qt + 运动控制 (固高运动控制卡)【1】环境准备,框架搭建
  7. 罗克韦尔Studio5000遇上西门子Process Simulate:数字化仿真与虚拟调试案例
  8. 手机代理上网_华为、荣耀手机安装GooglePlay的方法
  9. H3C认证网络工程师H3CNE
  10. educoder:实验十一 函数
  11. 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容
  12. java之本周、上周、开始、结束时间
  13. 同步异步+阻塞非阻塞-三述
  14. iOS性能测试怎么做?这款工具轻松稿定
  15. Ubuntu支持LinuxONE大型机:为云而生的强强新组合
  16. 实现电脑文件自动同步到FTP
  17. android 环信客服修改自己的头像
  18. Spring Boot的优点
  19. Android -- 屏幕适配之dimens适配
  20. python自动化测试学习笔记合集二

热门文章

  1. UIColor 中提取 RGBA
  2. 协议分析---HTTP协议和DNS协议
  3. 小学新学期班务工作计划
  4. 贝佐斯:管理亚马逊的20条经营理念
  5. 浅谈Java中final,finalized,finally
  6. 思科 计算机网络 第二章测试答案
  7. java安装心得_JAVA实验环境搭建与实验心得
  8. 教育部实锤:196所高校获批大数据相关专业
  9. 服务器获取用户信息失败是什么原因,花粉俱乐部获取用户信息失败怎么解决?花粉俱乐部登录失败是什么原因?...
  10. A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)