【问题描述】[中等]

【解答思路】

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]相关推荐

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

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

  2. Leetcode 214.最短回文串

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

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

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

  4. 214. 最短回文串

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

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

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

  6. leetcode214. 最短回文串

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

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

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

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

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

  9. Java实现回文串的四种方式

    Java实现回文串的两种方式 1.什么是回文串? "回文串"是一个正读和反读都一样的字符串,如"level"或者"noon"等就是回文串. ...

最新文章

  1. 多传感器融合:自动驾驶(上)
  2. SurfaceView的一个小应用:开发示波器
  3. 解决GitHub加载和下载慢问题
  4. Console.WriteLine()与MessageBox.Show()的区别
  5. [MATLAB调试笔记]Possion方程求网格点电场强度
  6. 计算机视觉与深度学习 | 基于DNN神经网络实现人的年龄及性别预测(代码类)
  7. Power of Three
  8. 蓝桥杯评分标准_蓝桥杯比赛要求
  9. netty源码解解析(4.0)-5 线程模型-EventExecutorGroup框架
  10. java用多线程实现爬虫_JAVA 多线程爬虫实例详解
  11. IT项目 软件研发最佳实践
  12. 首届“十大最具价值”互联网创新创业项目遴选榜单丨Xtecher联合中投协权威发布...
  13. 查询oracle job命令,oracle命令之job详解
  14. 华为3COM正式更名为『杭州华三通信技术有限公司(H3C)』
  15. linux下XAMP集成开发环境搭建流程总结
  16. 01.【入门必备】认识python-->Linux中python环境搭建-->Linux交互模式ipython
  17. python中如何打印阶梯_python 阶梯图
  18. 【C语言】交换函数(swap)
  19. SQL查询初学者指南读书笔记(四)where从句
  20. C语言:地址传递与传递

热门文章

  1. [AH/HNOI2017]大佬
  2. wireshark过滤使用
  3. jremind V0.1.3.0添加透明
  4. java反射 pdf_java反射学习笔记整理.pdf
  5. python+selenium 浏览器无界面模式运行
  6. Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)
  7. vue eslint报错Expected linebreaks to be ‘LF‘ but found ‘CRLF‘
  8. Android自定义view详解,使用实例,自定义属性,贝塞尔曲线
  9. Highcharts隐藏网格线
  10. vs2010帮助文件安装完全攻略