【LeetCode】5.最长回文子串(中心扩散法) 题目描述代码 题目描述 代码 class Solution { public: string longestPalindrome(string s) { int strlen=s.size(); int left=0; int right=0; int len=1; int maxlen=0; int maxstart=0; for(int i=0;i<strlen;i++){//从i点开始中心扩散 left = i-1; right = i+1; while(left>=0&&s[left]==s[i]){//上下两个while循环,其实是在找有多少和中心相同的字符,还没有开始扩散可以这么说。 left--; len++; } while(right<strlen && s[right]==s[i]){ right++; len++; } while(left>=0&&right<strlen&&s[left]==s[right]){//这个while才是开始中心扩散了,可以这么说。 left--; right++; len=len+2; } if(len>maxlen){ maxlen=len; maxstart=left; } len=1; } return s.substr(maxstart+1,maxlen) ;//一开始没有给maxstart+1,导致越界了,编译老是错误。 } };