公司动态

字符串与多维数组 KMP算法

📅 2026/8/21 21:18:53
字符串与多维数组 KMP算法
字符串匹配朴素匹配#include stdio.h #include string.h int main() { cahr s1[]abcbbacb; char s2[]ba; printf(%p\n,strstr(s1,s2)); return 0; }匹配不上就后挪#include stdio.h #include string.h int strMatch(char* str,char* pattern) { int nstrlen(str); int mstrlen(pattern); for(int i0;i(n-m);i) { int j0; while (jm) { if(str[i]pattern[j]) { i; j; } else //不等则后移 { ii-j; break; } } if(jm) { return i-j; } } return -1; } int main() { char* str abcabaabcabc; char* pattern abaa; int pos strMatch(str,pattern); printf(%d\n,pos); return 0; }KMP匹配#includestdio.h #includestring.h void getNext(char* pattern,int* next) { int mstrlen(pattern); int i0; int j-1; next[0]-1; while(im) { if(j-1||pattern[i]pattern[j]) { i; j; next[i]j; } else { jnext[j]; } } } int kmp(char*str,cahr* pattern) { int i0; int j0; int next[100] getNext(pattern,next); int nstrlen(str); int mstrlen(pattern); while(injm) { if(j-1||str[i]pattern[j]) { i; j; } else { jnext[j]; } } if(jm) { return i-j; } else { return -1; } } int main() { char* strabaabaabacacaabaabcc; char* patternababc; printf(%d\n,kmp(str,pattern)); return 0; }二维数组按行优先排列按列优先排列特殊矩阵