0001 /****************************************************************************************** 0002 * Text : 0 1 2 . . . i-j . . . . i . . n-1 0003 * ------------------------|-------------------|------------ 0004 * Pattern : 0 . . . . j . . 0005 * |-------------------| 0006 ******************************************************************************************/ 0007 int match ( char* P, char* T ) { //串匹配算法(Brute-force-1) 0008 size_t n = strlen ( T ), i = 0; //文本串长度、当前接受比对字符的位置 0009 size_t m = strlen ( P ), j = 0; //模式串长度、当前接受比对字符的位置 0010 while ( j < m && i < n ) //自左向右逐个比对字符 0011 if ( T[i] == P[j] ) //若匹配 0012 { i ++; j ++; } //则转到下一对字符 0013 else //否则 0014 { i -= j - 1; j = 0; } //文本串回退、模式串复位 0015 return i - j; //如何通过返回值,判断匹配结果? 0016 }