leetcode 214: Shortest Palindrome
来源:互联网 发布:尘埃3知乎 编辑:程序博客网 时间:2024/05/16 06:08
Use KMP algorithm. First, get the reverse of the string s called new_s, and add s, a special character ('#') and new_s together. Word out the next array on this new_s. Then next[len] will give the longest same prefix and postfix, in another word, longest palindrome.
I learned the KMP algorithm from http://blog.csdn.net/v_july_v/article/details/7041827.
class Solution {public: string shortestPalindrome(string s) { string new_s=s; reverse(new_s.begin(),new_s.end()); new_s=s+'#'+new_s;//to avoid error if s is empty or s is something like "aaa" int len=new_s.size(); vector<int> next(len+1); next[0]=-1; int k=-1,j=0; while(j<len) { if(k==-1||new_s[k]==new_s[j]) next[++j]=++k; else k=next[k]; } int idx=next[len]; string temp=s.substr(idx); reverse(temp.begin(),temp.end()); return temp+s; }};
0 0
- 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 214. Shortest Palindrome
- leetcode:Shortest Palindrome
- 网站搭建过程中后台相关 随笔
- 求果园中在t*s的矩阵里最多能有几棵柿子树 二维树状数组模板题 poj 2029 Get Many Persimmon Trees
- 移动端购物车的实现
- 数字处理类
- 谢尔排序
- leetcode 214: Shortest Palindrome
- [Java Concurrency in Practice]第七章 取消与关闭
- Android RadioButton
- OSPF特殊区域之STUB
- swift - The Flyweight Pattern
- java内存管理和垃圾回收机制
- 《C#入门经典(第6版)》读书笔记3_第三章:变量和表达式
- 虚函数表的实现细节
- hdu 2602 Bone Collector(经典dp)