解析思路代码
解析l为字符串长度
Max为最长回文子串长度
Max_R指向最长回文子串头部
Max_L指向最长回文子串尾部
p_r指向当前回文子串头部下标-1
p_l指向当前回文子串尾部下标+1
遍历字符串s
假设s[i]为回文子串中心
则有两种情况
1、s[i]为中心(回文子串长度为奇数)
p_r=i-1
p_l=i+1
判断p_r,p_l是否越界
若不越界,则判断s[p_r]是否等于s[p_l]
若等于则将s[p_r],s[p_l]加入当前回文子串,p_r–,p_l++,返回上一步
若不等于则break
若越界,则break
判断当前回文子串长度是否大于Max
若大于,则Max_R,Max_L,Max更新
2、s[i],s[i+1]为中心(回文子串长度为偶数)
p_r=i
p_l=i+1
判断p_l是否越界
若不越界,则判断s[p_r]是否等于s[p_l]
若等于则将s[p_r],s[p_l]加入当前回文子串,p_r–,p_l++,返回上一步
若不等于则break
若越界,则break
判断当前回文子串长度是否大于Max
若大于,则Max_R,Max_L,Max更新
#includeclass Solution { public: string longestPalindrome(string s) { int l=s.size(),p_r,p_l,Max=1,Max_R,Max_L; for(int i=0;i =0 && p_l =Max){ Max_R=p_r+1; Max_L=p_l-1; Max=Max_L-Max_R+1; } if(i+1 =0 && p_l =Max){ Max_R=p_r+1; Max_L=p_l-1; Max=Max_L-Max_R+1; } } } return s.substr(Max_R,Max); } };



