[Leetcode][第214题][JAVA][最短回文串][KMP][RK]
【问题描述】[中等]
【解答思路】
1. 字符串哈希
复杂度
class Solution {public String shortestPalindrome(String s) {int n = s.length();int base = 131, mod = 1000000007;int left = 0, right = 0, mul = 1;int best = -1;for (int i = 0; i < n; ++i) {left = (int) (((long) left * base + s.charAt(i)) % mod);right = (int) ((right + (long) mul * s.charAt(i)) % mod);if (left == right) {best = i;}//倒叙进制mul = (int) ((long) mul * base % mod);}String add = (best == n - 1 ? "" : s.substring(best + 1));StringBuffer ans = new StringBuffer(add).reverse();ans.append(s);return ans.toString();}
}
2. KMP
复杂度
class Solution {public String shortestPalindrome(String s) {int n = s.length();int[] fail = new int[n];Arrays.fill(fail, -1);//next数组for (int i = 1; i < n; ++i) {int j = fail[i - 1];while (j != -1 && s.charAt(j + 1) != s.charAt(i)) {j = fail[j];}if (s.charAt(j + 1) == s.charAt(i)) {fail[i] = j + 1;}}int best = -1;for (int i = n - 1; i >= 0; --i) {while (best != -1 && s.charAt(best + 1) != s.charAt(i)) {best = fail[best];}if (s.charAt(best + 1) == s.charAt(i)) {++best;}}String add = (best == n - 1 ? "" : s.substring(best + 1));StringBuffer ans = new StringBuffer(add).reverse();ans.append(s);return ans.toString();}
}作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/shortest-palindrome/solution/zui-duan-hui-wen-chuan-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【总结】
1. 【数据结构与算法】字符串匹配 BF算法 RK算法
2.【数据结构与算法】字符串匹配 KMP 算法
3.RK算法 本质是hash KMP算法关键求next数组
转载链接:https://leetcode-cn.com/problems/shortest-palindrome/solution/zui-duan-hui-wen-chuan-by-leetcode-solution/
[Leetcode][第214题][JAVA][最短回文串][KMP][RK]相关推荐
- LeetCode 214. 最短回文串(字符串哈希)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串. 找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aace ...
- Leetcode 214.最短回文串
Time: 20190906 Type: Hard 题目描述 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: &qu ...
- leetcode 214. 最短回文串 解题报告
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- 214. 最短回文串
214. 最短回文串 原始题目链接:https://leetcode.cn/problems/shortest-palindrome/ 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文 ...
- python最短回文串_LeetCode-Python-214. 最短回文串
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- leetcode214. 最短回文串
214. 最短回文串 难度困难114 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa& ...
- 力扣- - 最短回文串(KMP算法)
力扣- - 最短回文串(KMP算法) 文章目录 力扣- - 最短回文串(KMP算法) 一.题目描述 二.分析之KMP算法 1.暴力法 2.KMP算法 3.next数组求法1:暴力查找最长的前后缀 4. ...
- leetcode214. 最短回文串(kmp)
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- Java实现回文串的四种方式
Java实现回文串的两种方式 1.什么是回文串? "回文串"是一个正读和反读都一样的字符串,如"level"或者"noon"等就是回文串. ...
最新文章
- 多传感器融合:自动驾驶(上)
- SurfaceView的一个小应用:开发示波器
- 解决GitHub加载和下载慢问题
- Console.WriteLine()与MessageBox.Show()的区别
- [MATLAB调试笔记]Possion方程求网格点电场强度
- 计算机视觉与深度学习 | 基于DNN神经网络实现人的年龄及性别预测(代码类)
- Power of Three
- 蓝桥杯评分标准_蓝桥杯比赛要求
- netty源码解解析(4.0)-5 线程模型-EventExecutorGroup框架
- java用多线程实现爬虫_JAVA 多线程爬虫实例详解
- IT项目 软件研发最佳实践
- 首届“十大最具价值”互联网创新创业项目遴选榜单丨Xtecher联合中投协权威发布...
- 查询oracle job命令,oracle命令之job详解
- 华为3COM正式更名为『杭州华三通信技术有限公司(H3C)』
- linux下XAMP集成开发环境搭建流程总结
- 01.【入门必备】认识python-->Linux中python环境搭建-->Linux交互模式ipython
- python中如何打印阶梯_python 阶梯图
- 【C语言】交换函数(swap)
- SQL查询初学者指南读书笔记(四)where从句
- C语言:地址传递与传递
热门文章
- [AH/HNOI2017]大佬
- wireshark过滤使用
- jremind V0.1.3.0添加透明
- java反射 pdf_java反射学习笔记整理.pdf
- python+selenium 浏览器无界面模式运行
- Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)
- vue eslint报错Expected linebreaks to be ‘LF‘ but found ‘CRLF‘
- Android自定义view详解,使用实例,自定义属性,贝塞尔曲线
- Highcharts隐藏网格线
- vs2010帮助文件安装完全攻略