leetcode 214 Shortest Palinrome
来源:互联网 发布:可以用淘宝贷款吗 编辑:程序博客网 时间:2024/06/05 00:56
这题可以用KMP算法求解,如果大家不懂KMP可以先去看看KMP算法思路。
题目:
Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find by performing this transformation.
For example:
Given “aacecaaa”, return “aaacecaaa”.
Given “abcd”, return “dcbabcd”.
代码如下:
class Solution { //KMP算法思路 以及 部分匹配表Table的求解方法。 public String shortestPalindrome(String s) { if(s==null||s.length()==0||s.length()==1) return s; StringBuilder sb=new StringBuilder(s); //这里加#的原因是防止出现这种情况 //s="aaaaa" 如果没有#,这种情况会出错 String str=s+"#"+sb.reverse().toString(); int[] table=getTable(str); int mpl=table[table.length-1]; sb=new StringBuilder(s.substring(mpl,s.length())); return sb.reverse().toString()+s; } //得到Table表,KMP算法比较重要的一块就是求解Table数组。 public int[] getTable(String s){ int[] table=new int[s.length()]; int index=0; for(int i=1;i<s.length();i++){ if(s.charAt(index)==s.charAt(i)){ table[i]=table[i-1]+1; index++; }else{ index=table[i-1]; while(index>0&&s.charAt(index)!=s.charAt(i)) index=table[index-1]; if(s.charAt(index)==s.charAt(i)) index++; table[i]=index; } } return table; }}
阅读全文
0 0
- leetcode 214 Shortest Palinrome
- leetcode 214: Shortest Palindrome
- LeetCode #214 Shortest Palindrome
- leetcode 214: Shortest Palindrome
- [LeetCode 214] Shortest Palindrome
- LeetCode 214: Shortest Palindrome
- [leetcode-214]Shortest Palindrome(java)
- LeetCode 214 Shortest Palindrome (KMP next数组)
- leetcode - Shortest Palindrome
- LeetCode Shortest Palindrome
- 【回文】leetcode - Shortest Palindrome
- Shortest Palindrome Leetcode Java
- Shortest Palindrome leetcode-java
- [LeetCode] Shortest Palindrome I
- LeetCode - Shortest Palindrome (KMP)
- [leetcode] 214.Shortest Palindrome
- Shortest Palindrome -- leetcode
- leetcode--Shortest Word Distance
- 自定义顶部标题栏
- Nexus私服的安装和配置
- 解决Linux中无法解压rar文件
- 跟踪事件之——alter system set event和set events的区别
- 【BIM行业动态】十九大后建筑业将走向何方
- leetcode 214 Shortest Palinrome
- 角色和背景遮挡半透明效果的实现
- Java Spring MVC入门(一)——从零到一搭建项目
- 阿里电面试题汇总
- 一次还原算法的另类途径——动态库引用
- vs2012 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包。
- eclipse Atl+/提示问题
- darwin之拉流模块实现
- 前端工程化