题解 | #最长回文子串# 中心扩散法
最长回文子串
http://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
中心扩散法,回文串肯定是要对称的。
首先往左寻找与当期位置相同的字符,直到遇到不相等为止。
然后往右寻找与当期位置相同的字符,直到遇到不相等为止。
最后左右双向扩散,直到左和右不相等。
class Solution {
public:
int getLongestPalindrome(string A) {
int n=A.size();
if(n==0)
return 0;
if(n==1)
return 1;
int ans=1;
int left=0, right=0;
int maxlen=1;
for(int i=0; i<n; i++)
{
left=i-1;
right=i+1;
while(left>=0 && A[i]==A[left])
{
maxlen++;
left--;
}
while(right<n && A[i]==A[right])
{
maxlen++;
right++;
}
while(left>=0 && right<n && A[right]==A[left])
{
maxlen+=2;
left--;
right++;
}
ans=max(maxlen, ans);
maxlen=1;
}
return ans;
}
};
阿里巴巴灵犀互娱公司福利 668人发布
查看11道真题和解析