KMP
模版
例题
P3375 【模板】KMP - 洛谷
应用
字符串的周期
字符串的最小周期就是 \(len-nxt.back()\)
统计每个前缀出现的次数
代码
| C++ |
|---|
| string a;
cin >> a;
auto nxt = prefix(a);
int len = a.size();
vector<long long> ans(len + 1);
for (int i = 0 ; i < len ; i++) {
ans[nxt[i]]++;
}
for (int i = len ; i >= 1 ; i--) {
ans[nxt[i - 1]] += ans[i];
}
for (int i = 1 ; i <= len ; i++) {
ans[i]++;
}
long long res = 0;
for (int i = 1 ; i <= len ; i++) {
cout << i << " " << ans[i] << "\n";
}
|
例题