LeetCode #5 简单题
Posted error408
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode #5 简单题相关的知识,希望对你有一定的参考价值。
题目:求最长回文子串
题解:manacher算法,百度一堆讲解- -,我也不说了,想知道啥的自己百度去吧
class Solution { public: string longestPalindrome(string s) { string manaStr = "$#"; for (int i=0;i<s.size();i++){ manaStr += s[i]; manaStr += ‘#‘; } vector<int> rd(manaStr.size(), 0); int pos = 0, mx = 0; int start = 0, maxLen = 0; for (int i = 1; i < manaStr.size(); i++) { rd[i] = i < mx ? min(rd[2 * pos - i], mx - i) : 1; while (i+rd[i]<manaStr.size() && i-rd[i]>0 && manaStr[i + rd[i]] == manaStr[i - rd[i]]) rd[i]++; if (i + rd[i] > mx){ pos = i; mx = i + rd[i]; } if (rd[i] - 1 > maxLen){ start = (i - rd[i]) / 2; maxLen = rd[i] - 1; } } return s.substr(start, maxLen); } };
以上是关于LeetCode #5 简单题的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段