您的位置:首页 > 其它

最长回文子串

2013-10-06 21:11 211 查看
/*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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: