#include <stdio.h>
#include <string.h>
//sunday模式匹配算法
void initOcc(char* T, int* occ, int occn) {
int i;
for (i = occn - 1; i >= 0; i--) {
occ[i] = -1;
}
for (i = strlen(T) - 1; i >= 0; i--) {
if (occ[T[i]] == -1) {
occ[T[i]] = i;
}
}
}
int main() {
char S[] = "xzxmzncbvnvsidffkshjcasj";
char T[] = "asj";
int slen = strlen(S);
int tlen = strlen(T);
int occ[128] = {0};
initOcc(T, occ, sizeof(occ) / 4); //初始化occ数组
int i = 0, j = 0, key;
while (i < slen && j < tlen) {
if (S[i] == T[j]) {
i++;
j++;
} else {
key = i - j + tlen;
if (key >= slen) {
break;
}
i = i + (tlen - occ[S[key]]) - j; //跳跃
j = 0;
}
}
if (j == tlen) {
printf("ok\n");
} else {
printf("no\n");
}
return 0;
}