LeetCode Longest Palindromic Substring
2012-11-17 21:29
531 查看
Longest Palindromic Substring
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.
Tips:
O(n) solution:
http://www.felix021.com/blog/read.php?2040
Such a beautiful analysis.
Solution:
class Solution {
public:
string longestPalindrome(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> P;
string ss;
P.resize(s.size()*2+1);
ss.resize(s.size()*2+1);
for(int i=0;i<s.size();++i){
ss[i*2]='#';
ss[i*2+1]=s[i];
}
ss[s.size()*2]='#';
P[0]=0;P[1]=1;
int id=1;
for(int i=2;i<P.size();++i){
if(id+P[id]-i>0)
P[i]=min(id+P[id]-i,P[2*id-i]);
while((i-P[i]-1)>=0&&i+P[i]+1<ss.size()&&ss[i-P[i]-1]==ss[i+P[i]+1])++P[i];
if(P[i]>P[id])
id=i;
}
string result;
for(int i=(id-P[id]);i<=(id+P[id]);++i){
if(ss[i]!='#')
result+=ss[i];
}
return result;
}
};
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.
Tips:
O(n) solution:
http://www.felix021.com/blog/read.php?2040
Such a beautiful analysis.
Solution:
class Solution {
public:
string longestPalindrome(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<int> P;
string ss;
P.resize(s.size()*2+1);
ss.resize(s.size()*2+1);
for(int i=0;i<s.size();++i){
ss[i*2]='#';
ss[i*2+1]=s[i];
}
ss[s.size()*2]='#';
P[0]=0;P[1]=1;
int id=1;
for(int i=2;i<P.size();++i){
if(id+P[id]-i>0)
P[i]=min(id+P[id]-i,P[2*id-i]);
while((i-P[i]-1)>=0&&i+P[i]+1<ss.size()&&ss[i-P[i]-1]==ss[i+P[i]+1])++P[i];
if(P[i]>P[id])
id=i;
}
string result;
for(int i=(id-P[id]);i<=(id+P[id]);++i){
if(ss[i]!='#')
result+=ss[i];
}
return result;
}
};
相关文章推荐
- leetcode 5 Longest Palindromic Substring
- Longest Palindromic Substring--LeetCode
- [LeetCode]Longest Palindromic Substring
- leetcode第5题——**Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- Leetcode c语言-Longest Palindromic Substring
- Leetcode_005_Longest_Palindromic_Substring
- [Leetcode] Longest Palindromic Substring (Java)
- LeetCode之Longest Palindromic Substring
- LeetCode | Longest Palindromic Substring(最长回文子串)
- LeetCode 5 Longest Palindromic Substring
- Leetcode:Longest Palindromic Substring之详细分析
- LeetCode5-Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- leetcode-5- Longest Palindromic Substring
- leetcode Longest Palindromic Substring(Java)
- leetcode-Longest Palindromic Substring
- [Leetcode]Longest Palindromic Substring
- LeetCode(5)--Longest Palindromic Substring
- 【LeetCode笔记】Longest Palindromic Substring