Problem:
给定一个字符串s
,返回中最长的回文子串subString
如果该字符串的反转与原始字符串相同,则该字符串称为回文字符串。
Sulotion:
typedef struct SString{
char* str;
int strLength;
}SString;
char * longestPalindrome(char * s){
int length=strlen(s);
SString subString;
subString.strLength=0;
subString.str=s;
for(int i=0;i<length;i++){
for(int j=0;j<=i&&j+i<length;j++){
if(s[i-j]!=s[i+j]) break;
if(subString.strLength<2*j+1){
subString.str=&s[i-j];
subString.strLength=2*j+1;
}
}
for(int k=1;i-k+1>=0&&i+k<length;k++){
if(s[i-k+1]!=s[i+k]) break;
if(subString.strLength<2*k){
subString.str=&s[i-k+1];
subString.strLength=2*k;
}
}
}
if(subString.strLength<length) subString.str[subString.strLength]='\0';
return subString.str;
}