1.最长回文子串
最长回文子串_牛客题霸_牛客网
算法思路:
使用中心扩散算法,枚举所有的中点,向两边扩散,一个中点需要枚举两次,一次当回文串是奇数另一次回文串是偶数的情况。
class Solution {
public:
int getLongestPalindrome(string A)
{
int n = A.size();
int ret = 1;// 特殊处理 只有一个字符的情况
for(int i = 1; i < n; i++)
{
//当回文字串是偶数时
int left = i - 1;
int right = i;
while(left >= 0 && right < n && A[left] == A[right])
{
ret = max(ret, right - left + 1);
left--;
right++;
}
//奇数情况
left = i - 1;
right = i + 1;
while (left >= 0 && right < n && A[left] == A[right])
{
ret = max(ret, right -left + 1);
left--;
right++;
}
}
return ret;
}
};