[LeetCode]214. Shortest Palindrome
来源:互联网 发布:知乎 紫外线消毒 人体 编辑:程序博客网 时间:2024/06/05 18:11
https://leetcode.com/problems/shortest-palindrome/?tab=Description
在当前字符串前添加最短字符串,生成回文
暴力解法是找出前缀位置的最长回文
KMP做法,找当前String反转之后为revStr,求str + “&” + revStr的KMP的next数组。该next数组的最后一位表示包含当前位在内的前序位与str前缀相同的长度。因为是revStr是翻转过的,因此next[len - 1]的长度也就是str前缀回文的最大长度。
public class Solution { public String shortestPalindrome(String s) { String temp = s + "*" + new StringBuilder(s).reverse().toString(); int[] next = getNext(temp); return new StringBuilder(s.substring(next[temp.length()])).reverse().toString() + s; } private int[] getNext(String s) { int[] next = new int[s.length() + 1]; for (int i = 1, j = 0; i < s.length(); i++) { while (j > 0 && s.charAt(i) != s.charAt(j)) { j = next[j]; } if (s.charAt(i) == s.charAt(j)) { j++; } next[i + 1] = j; } return next; }}
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
- leetcode-214. Shortest Palindrome
- 【LeetCode】214. Shortest Palindrome
- [LeetCode]214. Shortest Palindrome
- Leetcode 214. Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- LeetCode 214. Shortest Palindrome
- leetcode 214. Shortest Palindrome
- leetcode 214. Shortest Palindrome
- [Leetcode]214. Shortest Palindrome@python
- (Java)LeetCode-214. Shortest Palindrome
- LeetCode hard 214. Shortest Palindrome
- [leetcode] 214. Shortest Palindrome 解题报告
- 如何脱颖而出?
- ElasticSearch并发操作之乐观锁的使用
- EditorWindow 和MenuItem
- Python 处理GBK编码转UTF-8读写乱码问题
- Xutils3图片缓存
- [LeetCode]214. Shortest Palindrome
- hdu3790最短路径问题Dijkstra(迪杰斯特拉)
- ZCMU—J
- SpringMVC返回json数据的三种方式
- Java代理机制
- C++STL
- PropertyDrawer 自定义属性绘图
- Android初识(1)
- c 程序设计语言 1-9