Longest Palindromic Substring
来源:互联网 发布:算法导论中文版pdf下载 编辑:程序博客网 时间:2024/06/05 02:14
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
时间复杂度O(n²)
class Solution {public: string longestPalindrome(string s) { int n = s.length(); if(n == 0){ return ""; } string result = s.substr(0,1); for(int i = 0; i < n - 1; i++){ string s1 = process(s,i,i); //奇数的情况下 if(s1.length() > result.length()){ result = s1; } string s2 = process(s,i,i+1); //偶数的情况下 if(s2.length() > result.length()){ result = s2; } } return result; } string process(string s, int begin, int end){ while(begin >= 0 && s[begin] == s[end]){ begin--; end++; } return s.substr(begin + 1, end - begin - 1); }};
时间复杂度O(n)
http://leetcode.com/2011/11/longest-palindromic-substring-part-ii.html
class Solution {public: string preProcess(string s) { int n = s.length(); if (n == 0) return "^$"; string ret = "^"; for (int i = 0; i < n; i++) ret += "#" + s.substr(i, 1); ret += "#$"; return ret; } string longestPalindrome(string s) { string T = preProcess(s); int n = T.length(); int *P = new int[n]; int C = 0, R = 0; for (int i = 1; i < n-1; i++) { int i_mirror = 2*C-i; // equals to i' = C - (i-C) P[i] = (R > i) ? min(R-i, P[i_mirror]) : 0; // Attempt to expand palindrome centered at i while (T[i + 1 + P[i]] == T[i - 1 - P[i]]) P[i]++; // If palindrome centered at i expand past R, // adjust center based on expanded palindrome. if (i + P[i] > R) { C = i; R = i + P[i]; } } // Find the maximum element in P. int maxLen = 0; int centerIndex = 0; for (int i = 1; i < n-1; i++) { if (P[i] > maxLen) { maxLen = P[i]; centerIndex = i; } } delete[] P; return s.substr((centerIndex - 1 - maxLen)/2, maxLen); }};
0 0
- LeetCode: Longest Palindromic Substring
- LeetCode Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [Leetcode] Longest Palindromic Substring
- Longest Palindromic substring
- [LeetCode] Longest Palindromic Substring
- LeetCode5:Longest Palindromic Substring
- Leetcode : Longest Palindromic Substring
- Longest Palindromic Substring
- Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- Longest Palindromic Substring
- LeetCode-Longest Palindromic Substring
- Longest Palindromic Substring
- Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Longest Palindromic Substring leetcode
- Winsock I/O 方法 select
- Freemarker 特性 和 注意事项(做项目时遇到的记录的)
- 主机访问虚拟机web服务器
- android 最快模拟器
- 在MySQL命令行下建立用户和授予权限的操作实例
- Longest Palindromic Substring
- 多用组合,少用继承
- 将zlib编译到boost
- java之synchronized关键字使用详解
- uva oj 409
- GDI+打造图片查看器(一)
- CRT合并
- iOS开发 适配7系统和解决视图高度一直为480(即上下部分黑屏)
- unity中SendMessage的bug – unity3d游戏开发