#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;}
新闻热点
疑难解答