给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
int tobig(int n,int m){
if(n>m){
return n;
}
return m;
}
int finds(char *s,int left,int right){
while(left>=0&&right<strlen(s)&&s[left]==s[right]){
left--;
right++;
}
return right-left-1;
}
char * longestPalindrome(char * s){
int len=strlen(s);
if(len<1){ return "";}
int start=0,end=0,max=0;
for(int i=0;i<len;i++){
int len1=finds(s,i,i);
int len2=finds(s,i,i+1);
int lenmax=tobig(len1,len2);
if(lenmax>end-start){
end=i+lenmax/2;
start=i-(lenmax-1)/2;
max=lenmax;
}
}
char *c=(char *)malloc(sizeof(char)*(max+1));
strncpy(c,s+start,max);
c[max]='\0';
return c;