/*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.*/
#include <string>
#include <iostream>
class Solution
{
public:
std::string longestPalindrom(std::string s)
{
if(s.size()==0)
return s;
int l=-1,r=-1;
for(int i=0;i<s.size();++i)
{
int ll=i-1;
int rr=i+1;
int lll=i;
int rrr=i+1;
while(ll>=0 && rr<s.size() && s[ll]==s[rr])
{
--ll;
++rr;
}
while(lll>=0 && rrr<s.size() && s[lll]==s[rrr])
{
--lll;
++rrr;
}
if(rr-ll>r-l)
{
r=rr;
l=ll;
}
if(rrr-lll>r-l)
{
r=rrr;
l=lll;
}
}
if(r-l-1>0)
return s.substr(l+1,r-l-1);
return std::string();
}
};
int main(int argc,char* argv[])
{
std::string str("abadcefabcdcba");
Solution s;
std::cout<<s.longestPalindrom(str)<<std::endl;
return 0;
}
最长回文子串
最新推荐文章于 2025-06-25 10:54:18 发布