字符串模式匹配KMP算法
简单匹配算法
int Index_BF ( char S [ ], char T [ ], int pos ) { /* 若串 S 中从第pos(S 的下标0≤pos<StrLength(S))个字符起存在和串 T 相同的子串,则称匹配成功,返回第一个这样的子串在串 S 中的下标,否则返回 -1 */int i = pos, j = 0; while ( S[i+j] != '\0'&& T[j] != '\0') if ( S[i+j] == T[j] ) j ++; // 继续比较后一字符else { i ++; j = 0; // 重新开始新的一轮匹配}if ( T[j] == '\0') return i; // 匹配成功 返回下标else return -1; // 串S中(第pos个字符起)不存在和串T相同的子串}
还是相同的例子,在S=”abcabcabdabba”中查找T=”abcabd”,当第一次搜索到S[5] 和T[5]不等后,S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中T[5]==’d’的模式函数值(next[5] ...
附件列表