题解 | #最长回文子串#
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af
这题很经典
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param A string字符串 * @return int整型 */ int fun(string A, int left, int right) { // begin与end只能在可取元素范围内 while (left >= 0 && right <= A.size() - 1 && A[left] == A[right]) left --, right ++; // 注意这里begin是往左走,end是往右走 // 注意这里是减一, 一般区间长度为 end - begin - 1 // 因为最后出while 循环时,最后一个两边字符不相等 // 所以区间长度减二,即 end - begin - 1 return right - left - 1; } int getLongestPalindrome(string s) { int maxn = 1; // 循环边界量为S.size() - 1是因为,最后一个元素不可能为回文子串 // 从0开始是因为,只有一个元素时,回文串长度为它自己 for (int i = 0; i < s.size() - 1; i ++) { // 两种迭代方式,两边对称,或者保留中间一个元素,往两边迭代 maxn = max(maxn, max (fun(s, i, i), fun(s, i, i + 1) ) ); } return maxn; } };