This commit is contained in:
2024-04-18 18:38:55 +08:00
parent bfcbb1996a
commit 4f8f929242
20 changed files with 3408 additions and 0 deletions

29
ACMOJ-2112.cpp Normal file
View File

@ -0,0 +1,29 @@
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
const int kMaxN = 4e6 + 10;
char s[kMaxN], s_reverse[kMaxN];
int len = 0;
int Next[kMaxN];
int main() {
#ifdef local
freopen("pro.in", "r", stdin);
#endif
scanf("%s", s + 1);
len = strlen(s + 1);
for (int i = 1; i <= len; i++) s_reverse[i] = s[len + 1 - i];
for (int i = 2, j = 0; i <= len; i++) {
while (j > 0 && s_reverse[i] != s_reverse[j + 1]) j = Next[j];
if (s_reverse[i] == s_reverse[j + 1]) j++;
Next[i] = j;
}
int p = 0;
for (int i = 1; i <= len; i++) {
while (p > 0 && s[i] != s_reverse[p + 1]) p = Next[p];
if (s[i] == s_reverse[p + 1]) p++;
}
printf("%d\n", len - p);
return 0;
}