0001 /****************************************************************************************** 0002 * Text : 0 1 2 . . . i i+1 . . . i+j . . n-1 0003 * ------------------------|-------------------|------------ 0004 * Pattern : 0 1 . . . j . . 0005 * |-------------------| 0006 ******************************************************************************************/ 0007 int match ( char* P, char* T ) { //串匹配算法(Brute-force-2) 0008 int n = strlen ( T ), i; //T长度、与P首字符的对齐位置 0009 int m = strlen ( P ), j; //P长度、当前接受比对字符的位置 0010 for ( i = 0; i + m <= n; i++ ) { //T从第i个字符起,与 0011 for ( j = 0; j < m; j++ ) //P中对应的字符逐个比对 0012 if ( T[i + j] != P[j] ) break; //若失配,P右移一个字符,再做一轮比对 0013 if ( j >= m ) break; //找到匹配子串 0014 } 0015 return i; //如何通过返回值,判断匹配结果? 0016 }