给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s 仅由数字和英文字母组
思路:
直接暴力
char * longestPalindrome(char * s){
int len = strlen(s);
if(len <= 1)
return s;
int k, l;
int max_len = 1, max_index = 0;
for(int i = 0; i < len - 1; i++){
for(int j = len - 1; j > i; j--){
if(s[i] == s[j]){ //找到相同的字符
l = (j - i + 1) / 2;
for(k = 1; k < l; k++){ //判断i和j之间的字符串是否是回文
if(s[i + k] != s[j - k])
break;
}
if(k == l){ //当找到回文串时,判断其是否是比已有的回文串长,若是则更新最大长度和对应的下标
if(max_len < j - i + 1){
max_len = j - i + 1;
max_index = i;
}
}
}
}
}
s[max_index + max_len] = '\0'; //截断最长回文串后的字符
return s + max_index;
}