cf 126 B Password
题意:
- 求一个s的字串t,t满足是s的前缀,是s的后缀,是s的非前缀且非后缀。
思路:
- 很明显可以用z算法(拓展kmp来求,或二分哈希来解
- z算法:对于字符串a的每个后缀,匹配它与a的第一个后缀的最长公共前缀,复杂度线性
- 先求出一个最短的前后缀,再看看这个字串是不是非前后缀。
z算法
#include <algorithm>
#include <iostream>
#include <cstring>
#include <iomanip>
#include <string>
#include <cstdio>
#include <vector>
#include <bitset>
#include <stack>
#include <queue>
#include <cmath>
#include <set>
#include <map>
using namespace std;
#define rep(i,a,b)