请写出这道题的c++代码:输入格式 直接输入字符串(长度<=1000000,只包含小写字母和数字)。 输出格式 输出最长回文串。(若有多个回文串,则输出第一个出现的回文串。)
时间: 2024-05-27 07:14:50 浏览: 148
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000005];
int len, i, j, max_len = 1, start = 0;
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++) {
// 寻找以i为中心的奇数长度回文串
j = 1;
while (i - j >= 0 && i + j < len && str[i - j] == str[i + j]) {
j++;
}
if (2 * j - 1 > max_len) {
max_len = 2 * j - 1;
start = i - j + 1;
}
// 寻找以i和i+1为中心的偶数长度回文串
j = 0;
while (i - j >= 0 && i + j + 1 < len && str[i - j] == str[i + j + 1]) {
j++;
}
if (2 * j > max_len) {
max_len = 2 * j;
start = i - j + 1;
}
}
for (i = 0; i < max_len; i++) {
printf("%c", str[start + i]);
}
printf("\n");
return 0;
}
阅读全文