题解 | #最长回文子串#
最长回文子串(注:非子序列),考虑使用中心扩展法,时间复杂度O(n²),空间复杂度O(1)。
int expand(string& A, int left, int right){
int n = A.length();
// 考虑边界处理
while(left>=0 && right<n && A[left]==A[right]){
--left;
++right;
}
return right-left-1;
}
int getLongestPalindrome(string A) {
int res = 0;
int n = A.length();
for(int i=0; i<n; ++i){
// 以每个字符为中心点进行扩展
res = max(res, expand(A, i, i));
// 以每个字符及其右侧字符为中心进行扩展
res = max(res, expand(A, i, i+1));
}
return res;
}

上海得物信息集团有限公司公司福利 1208人发布