Leetcode 5. 最长回文子串
2018-03-02 12:14
513 查看
Manacher算法
#define L(x) (x-P[x]) #define R(x) (x+P[x]) #define LS(x,y) (2*x-y) class Solution { public: string longestPalindrome(string s) { int P[2010], Po, mx_Po; string str = "@", ans; char tmp[3] = "##"; for (auto x : s) tmp[1] = x, str.append(tmp); str.append("#!"); Po = mx_Po = 0; for (int i = 1; i < str.size() - 1; ++i) { if (R(Po) > i) P[i] = min(R(Po) - i, P[LS(Po, i)]); else P[i] = 0; while (str[L(i) - 1] == str[R(i) + 1]) ++P[i]; if (R(i) > R(Po)) Po = i; if (P[i] > P[mx_Po]) mx_Po = i; } s = string(str, L(mx_Po), 2 * P[mx_Po] + 1); for (auto x : s) if (x != '#') ans += x; return ans; } };
相关文章推荐
- leetcode Longest Palindromic Substring最长回文子串
- LeetCode之“字符串”:最长回文子串
- leetcode练习题5--最长回文子串
- LeetCode_5---Longest Palindromic Substring (求最长回文子串)
- LeetCode5. Longest Palindromic Substring 最长回文子串 4种方法
- leetcode-5. Longest Palindromic Substring(寻找最长回文子串)
- [LeetCode系列] 最长回文子串问题
- LeetCode5. Longest Palindromic Substring(最长回文子串:Manacher算法)
- LeetCode-最长回文子串
- LeetCode 5. Longest Palindromic Substring--最长回文子串
- 【LeetCode-面试算法经典-Java实现】【005-Longest Palindromic Substring(最长回文子串)】
- 【LeetCode 214】最长回文子串
- 求最长回文子串 - leetcode 5. Longest Palindromic Substring
- LeetCode 5. Longest Palindromic Substring(最长回文子串)
- leetcode:最长回文子串
- leetcode题集——最长回文子串(待整理)
- 最长回文子串第一部分(leetcode)
- leetcode 第五题 最长回文子串
- [LeetCode] 5. Longest Palindromic Substring 最长回文子串
- 2014再见 2015你好 【附带】[LeetCode]最长回文子串