给你一个字符串 s,找到 s 中最长的回文子串
char * longestPalindrome(char * s){
int start, i, j, count, left, right, maxLength=0, len=strlen(s);
if(len==1 || len==0)
return s;
for(i=0; i<len; i+=count){
left = i-1; right = i+1; count=1; // count用于处理相同的字符,减少循环的次数
while(s[right]!='\0' && s[right]==s[i]){
++right; ++count;
}
while(left>=0 && s[right]==s[left]){ // 比如 cbbba,经过前一层循环处理,以b为中心开始从a,c开始比较
--left; ++right;
}
if(right-left-1>maxLength){ // start用于记录每一次求得的最大回文子串的下标
maxLength = right - left -1;
start = left + 1;
}
}
s[start+maxLength] = '\0'; // 原地操作截取最大回文字符串
return s+start;
}