Shortest Palindrome
来源:互联网 发布:个人所得税申报的软件 编辑:程序博客网 时间:2024/05/01 22:58
暴力破解思路:补充完成之后的回文串中心必定在原字符串中----原字符串以第一个字符为起点必然存在至少一个回文串(长度可以为1)----找到原字符串中以第一个字符为起点最长的回文串----把剩余部分的翻转补充到原字符串头部。
优化方法:
1、求字符串s的翻转s_rev
2、将两个字符串进行拼接:{s}#{s_rev}
3、找出新字符串中最长公共前缀后缀长度comLen
4、s_rev.substring(0, s.length() - comLen)就是在原字符串头部插入的子串部分
求最长公共前缀后缀长度的时候用到了KMP算法
class Solution {public:string shortestPalindrome(string s) {string r = s;reverse(r.begin(), r.end());string t = s + "#" + r;vector<int> next(t.size(), 0);//next[i]表示从t[i]到开头的子串的相同前缀后缀的个数for (int i = 1; i < t.size(); ++i) {//求相同前缀后缀字母个数,采用了kmp算法优化?int j = next[i - 1];while (j > 0 && t[i] != t[j]) j = next[j - 1];next[i] = (j += t[i] == t[j]);}return r.substr(0, s.size() - next.back()) + s;}};
0 0
- Shortest Palindrome
- Shortest Palindrome
- Shortest Palindrome
- Shortest Palindrome
- ***Shortest Palindrome
- Shortest Palindrome
- Shortest Palindrome
- Shortest Palindrome
- leetcode 214: Shortest Palindrome
- Leetcode214-Shortest Palindrome
- leetcode - Shortest Palindrome
- LeetCode Shortest Palindrome
- Shortest Palindrome(KMP)
- 【回文】leetcode - Shortest Palindrome
- Shortest Palindrome Leetcode Java
- Shortest Palindrome leetcode-java
- [LeetCode] Shortest Palindrome I
- LeetCode - Shortest Palindrome (KMP)
- 《C++ Primer Plus(第六版)》(47)(总结)
- svg图片动态缩放功能(jquery-svg-pan-zoom)
- Thread的生命周期以及六种枚举态
- LeakCanary直面项目中的内存泄露
- 支付宝不止怀有“社交梦”,社区金融才是它的野心所在
- Shortest Palindrome
- oracle chr(10) 与java 中的\n 等价
- ADO.NET Entity Framework 5.0 小结
- Android 系列 2.4用户旋转设备时保留数据
- android横竖屏切换、按home键、按返回键所触发的生命周期
- iOS App上传到苹果应用商店App Store教程
- SharedPreferences、editor
- Error:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException
- Spring Boot中使用MongoDB数据库