214. 最短回文串

难度困难114

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

示例 1:

输入: "aacecaaa"
输出: "aaacecaaa"

示例 2:

输入: "abcd"
输出: "dcbabcd"

思路:马拉车求出以0开头的最大回文串,然后在前面添加后面字符串的翻转即可。

傻子都能看懂的马拉车Manacher

class Solution {
public String preProcess(String s) {int n = s.length();if (n == 0) {return "^$";}String ret = "^";for (int i = 0; i < n; i++)ret += "#" + s.charAt(i);ret += "#$";return ret;
}// 马拉车算法
public String shortestPalindrome(String s) {String T = preProcess(s);int n = T.length();int[] P = new int[n];int C = 0, R = 0;for (int i = 1; i < n - 1; i++) {int i_mirror = 2 * C - i;if (R > i) {P[i] = Math.min(R - i, P[i_mirror]);// 防止超出 R} else {P[i] = 0;// 等于 R 的情况}// 碰到之前讲的三种情况时候,需要利用中心扩展法while (T.charAt(i + 1 + P[i]) == T.charAt(i - 1 - P[i])) {P[i]++;}// 判断是否需要更新 Rif (i + P[i] > R) {C = i;R = i + P[i];}}//这里的话需要修改int maxLen = 0;int centerIndex = 0;for (int i = 1; i < n - 1; i++) {int start = (i - P[i]) / 2;//我们要判断当前回文串是不是开头是不是从 0 开始的if (start == 0) {maxLen = P[i] > maxLen ? P[i] : maxLen;}}return new StringBuilder(s.substring(maxLen)).reverse() + s;
}
}

leetcode214. 最短回文串相关推荐

  1. leetcode214. 最短回文串(kmp)

    给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...

  2. leetcode 214. 最短回文串 解题报告

    给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...

  3. python最短回文串_LeetCode-Python-214. 最短回文串

    给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...

  4. 力扣- - 最短回文串(KMP算法)

    力扣- - 最短回文串(KMP算法) 文章目录 力扣- - 最短回文串(KMP算法) 一.题目描述 二.分析之KMP算法 1.暴力法 2.KMP算法 3.next数组求法1:暴力查找最长的前后缀 4. ...

  5. LeetCode 214. 最短回文串(字符串哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串. 找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aace ...

  6. Leetcode 214.最短回文串

    Time: 20190906 Type: Hard 题目描述 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: &qu ...

  7. 214. 最短回文串

    214. 最短回文串 原始题目链接:https://leetcode.cn/problems/shortest-palindrome/ 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文 ...

  8. leetcode 214. Shortest Palindrome | 214. 最短回文串(Java)

    题目 https://leetcode.com/problems/shortest-palindrome/ 题解 看了 Related Topics - Rolling Hash 下的相关题目,看到了 ...

  9. [Leetcode][第214题][JAVA][最短回文串][KMP][RK]

    [问题描述][中等] [解答思路] 1. 字符串哈希 复杂度 class Solution {public String shortestPalindrome(String s) {int n = s ...

最新文章

  1. 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
  2. python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;
  3. 使用 Windows 服务器备份执行 Exchange 2010 备份
  4. Hyperopt中文文档导读
  5. MongoDB(6.mongodb的聚合操作以及高级查询3、排序等)
  6. doAcquireSharedInterruptibly
  7. EclipseLink MOXy作为JAXB提供者
  8. jquery.roundabout.js图片叠加3D旋转
  9. 为啥用mencoder执行格式转换不退出_kindle|什么?calibre还能这么用?
  10. linux crypto cbc 接口,Linux 2.6.38.4: User-space interface for Crypto API
  11. 初识UNIX操作系统
  12. Connection: keep-alive——[HTTP权威指南]摘录
  13. python 直方图均衡化_直方图均衡化-Python实现
  14. html文字阴影效果图,CSS3 -- 文字阴影(text-shadow)
  15. 中国裸眼3D视频广告定制市场动态分析与发展策略研究报告2022-2028年
  16. 用OneDrive生成音乐外链和图片外链
  17. 初探springboot的荆棘之路
  18. 日照分析的计算机精度,日照分析的部分参数详解
  19. 11.18-刷题日结
  20. 如何解决谷歌浏览器不加载Adobe Flash Player的问题

热门文章

  1. django 学习 (二) 模板
  2. 互斥信号量和二进制信号量
  3. 设计模式C++实现(2)——单例模式
  4. html5教学文档笔记,4.HTML 教程- (HTML5 基础)
  5. educoder平台_22个在线平台,2.4万门网课
  6. execl按数值分类
  7. ArcGIS斜坡单元工具箱
  8. Failed to instantiate file__from module__The specified list does
  9. 深入探究JVM | klass-oop对象模型研究
  10. 台式机电脑配置单_2020年电脑配置单重点硬件参考