leetcode214. 最短回文串
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. 最短回文串相关推荐
- leetcode214. 最短回文串(kmp)
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- leetcode 214. 最短回文串 解题报告
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- python最短回文串_LeetCode-Python-214. 最短回文串
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- 力扣- - 最短回文串(KMP算法)
力扣- - 最短回文串(KMP算法) 文章目录 力扣- - 最短回文串(KMP算法) 一.题目描述 二.分析之KMP算法 1.暴力法 2.KMP算法 3.next数组求法1:暴力查找最长的前后缀 4. ...
- LeetCode 214. 最短回文串(字符串哈希)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串. 找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aace ...
- Leetcode 214.最短回文串
Time: 20190906 Type: Hard 题目描述 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: &qu ...
- 214. 最短回文串
214. 最短回文串 原始题目链接:https://leetcode.cn/problems/shortest-palindrome/ 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文 ...
- leetcode 214. Shortest Palindrome | 214. 最短回文串(Java)
题目 https://leetcode.com/problems/shortest-palindrome/ 题解 看了 Related Topics - Rolling Hash 下的相关题目,看到了 ...
- [Leetcode][第214题][JAVA][最短回文串][KMP][RK]
[问题描述][中等] [解答思路] 1. 字符串哈希 复杂度 class Solution {public String shortestPalindrome(String s) {int n = s ...
最新文章
- 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
- python使用fpdf生成pdf章节(chapter)文件包含:页眉、页脚、章节主体、章节内容等;
- 使用 Windows 服务器备份执行 Exchange 2010 备份
- Hyperopt中文文档导读
- MongoDB(6.mongodb的聚合操作以及高级查询3、排序等)
- doAcquireSharedInterruptibly
- EclipseLink MOXy作为JAXB提供者
- jquery.roundabout.js图片叠加3D旋转
- 为啥用mencoder执行格式转换不退出_kindle|什么?calibre还能这么用?
- linux crypto cbc 接口,Linux 2.6.38.4: User-space interface for Crypto API
- 初识UNIX操作系统
- Connection: keep-alive——[HTTP权威指南]摘录
- python 直方图均衡化_直方图均衡化-Python实现
- html文字阴影效果图,CSS3 -- 文字阴影(text-shadow)
- 中国裸眼3D视频广告定制市场动态分析与发展策略研究报告2022-2028年
- 用OneDrive生成音乐外链和图片外链
- 初探springboot的荆棘之路
- 日照分析的计算机精度,日照分析的部分参数详解
- 11.18-刷题日结
- 如何解决谷歌浏览器不加载Adobe Flash Player的问题
热门文章
- django 学习 (二) 模板
- 互斥信号量和二进制信号量
- 设计模式C++实现(2)——单例模式
- html5教学文档笔记,4.HTML 教程- (HTML5 基础)
- educoder平台_22个在线平台,2.4万门网课
- execl按数值分类
- ArcGIS斜坡单元工具箱
- Failed to instantiate file__from module__The specified list does
- 深入探究JVM | klass-oop对象模型研究
- 台式机电脑配置单_2020年电脑配置单重点硬件参考