给你一个字符串 s
,找到 s
中最长的回文子串。
完整代码已上传至github,放在 dailyWork_2022_2_9文件夹中:
GitHub - frankRenlf/c_dailyWorkhttps://github.com/frankRenlf/c_dailyWork.git部分代码如下:
int decided(char* s, int l, int r)
{
while (l >= 0 && r < strlen(s) && s[l] == s[r])
{
l--;
r++;
}
return r - l - 1;
}
char* longestPalindrome(char* s) {
int len = strlen(s);
if (len == 0 || len == 1)
{
return s;
}
int max = 0;
int start = 0;
for (int i = 1; i < len; i++)
{
int len1 = decided(s, i - 1, i + 1);
int len2 = decided(s, i - 1, i);
if (max < (len1 > len2 ? len1 : len2))
{
max = (len1 > len2 ? len1 : len2);
start = i - max / 2;
}
}
*(s + start + max) = '\0';
return s + start;
}