题解 | #最长回文子串#
最长回文子串(注:非子序列),考虑使用中心扩展法,时间复杂度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; }