题目链接: 最长回文子串
使用中心扩展算法进行求解, 即遍历字符串长度, 每次以当前位置为中心向左右扩展, 根据字符串长度的奇偶情况需要不同处理求最大值, 在枚举中心点时, 需要考虑两种遍历方式:
- 第一种:
- 第二种:
题解代码:
class Solution
{
public:
//中心扩展算法
int getLongestPalindrome(string A)
{
int len = 0;
//枚举每个中心点
for(int i = 0; i < A.size(); ++i)
{
//奇数
int left = i - 1;
int right = i + 1;
while(left >= 0 && right < A.size() && A[left] == A[right])
{
left--;
right++;
}
len = max(len, right - left - 1);
//偶数
left = i;
right = i + 1;
while(left >= 0 && right < A.size() && A[left] == A[right])
{
left--;
right++;
}
len = max(len, right - left - 1);
}
return len;
}
};