链接
题目描述
如果一个字符串正着读和倒着读是一样的,则称它是回文的。
给定一个长度为 N的字符串S,求他的最长回文子串的长度是多少。
样例输入
abcbabcbabcba
abacacbaaaab
END
样例输出
Case 1: 13
Case 2: 6
思路
正反两遍求出hash值,然后枚举点向两边二分求出最大长度
代码
#include <cstdio>
#include <cstring>
#include <iostream>
#define ull unsigned long long
using namespace std;
int l, r, mid, t, len, ans;
ull c[1000050], z[1000050], f[1000050];
char s[1000050];
void work() {
memset(z, 0, sizeof(z));
memset(f, 0, sizeof(f));
ans = 1;
for (int i = 0; i < len; ++i) z[i + 1] = z[i] * 131