class Solution {
public:
string longestPalindrome(string s) {
if(s.size()==0)
return "";
if(s.size()==1)
return s;
int maxlen=1;//字符串最大长度
int maxstart=0;//字符串最大长度时的开始位置
for(int i=0;i<s.size();)
{
if(s.size()-i<maxlen/2) break;//正向搜索的长度小于最大长度的一半,找不到更长的字符串
int k,j;//j反向搜索 k正向搜索
k=j=i;
while(k<s.size()-1&&s[k+1]==s[k]) k++;//去除重复的元素
i=k+1;//i指向第一个不和上次重复的字符
while(j>0&&k<s.size()-1&&s[j-1]==s[k+1])//前后扩展
{
j--;
k++;
}
if(k-j+1>maxlen)//更新最长字符串的长度
{
maxlen=k-j+1;
maxstart=j;
}
}
return s.substr(maxstart,maxlen);
}
};
5. Longest Palindromic Substring
最新推荐文章于 2017-03-11 22:57:28 发布