12
13
14
23
24
34
输入受限:不能 42 开头
输出受限:1,2 不开头时 12 临近
1. 4132
2. 4213
3. 4231
void next(string P, int* arr) {
int i = 0, j = -1;
arr[0] = -1;
while (i < P.length() - 1) {
if (j == -1 || P[i] == P[j]) {
i++;
j++;
arr[i] = j;
}
else {
j = arr[j];
}
}
}
void nextval(string P, int* arr) {
int i = 0, j = -1;
arr[0] = -1;
while (i < P.length() - 1) {
if (j == -1 || P[i] == P[j]) {
i++;
j++;
if (P[i] != P[j]) {
arr[i] = j;
}
else {
arr[i] = arr[j];
}
}
else {
j = arr[j];
评论0