[LeetCode] Longest Palindromic Substring
2013-07-27 11:08
405 查看
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.
之前写过一篇讲这个问题,但忘记当时有没有写代码了,这次写的时候发现那篇帖子里的代码有一些不妥的地方。
/article/8613971.html
还是那个思路,注意除了要构造成 '#a#a#b#c' 这样,还要在头和尾添加两个不相同的字符’$','%'来做哨兵,防止越界。
另外 while(tmp[i-len[i]]==tmp[i+len[i]])
++len[i]
这一行之后要减一才行,大家可以举个例子试一下。
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.
之前写过一篇讲这个问题,但忘记当时有没有写代码了,这次写的时候发现那篇帖子里的代码有一些不妥的地方。
/article/8613971.html
还是那个思路,注意除了要构造成 '#a#a#b#c' 这样,还要在头和尾添加两个不相同的字符’$','%'来做哨兵,防止越界。
另外 while(tmp[i-len[i]]==tmp[i+len[i]])
++len[i]
这一行之后要减一才行,大家可以举个例子试一下。
#define pb push_back class Solution { public: string longestPalindrome(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function string tmp=create(s); int n=tmp.length(); vector<int> len(n,0); int id=1,mx=1; int ans=0,mxl=-1; for(int i=2;i<n-1;i++) { if( i<mx ) len[i]=min(len[2*id-i],mx-i+1); while(tmp[i-len[i]]==tmp[i+len[i]]) ++len[i]; --len[i]; if ( i+len[i] > mx) id=i,mx=i+len[i]; if( len[i] > mxl) { mxl=len[i]; ans=i; } } int mid = ( (ans-1)>>1 ); int start=mid-(len[ans]>>1);; return s.substr(start,mxl); } string create(string& s) { int n=s.length(); string news; news.pb('$'); for(int i=0;i<n;i++) { news.pb('#'); news.pb(s[i]); } news.pb('#'); news.pb('%'); return news; } };
相关文章推荐
- 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