【算法】串的模式匹配算法
算法目的:确定串中所含子串(模式串)第一次出现的位置
算法应用:搜索引擎、拼写检查、语言翻译
算法实现:
Brute-Force算法
简称BF算法,采用穷举思想
算法思路:从主串的每一个字符开始依次与模式串的字符进行比较。
将主串的第n个字符和模式串的第一个字符进行比较:
代码实现:
int Index_BF(SString S, SString T, int pos) {
//i和j都从1开始
int i = pos, j = 1;
while(i <= S.length && j <= T.length) {
if(S.chr[i] == T.chr[j]) {
i++; j++; //主串和子串依次向下匹配下一个字符
} else {
i = i - j + 2; //i = (i-j+1)+1
j = 1;
}
}
//此时j遍历完了,说明子字符串找到
if(j > T.length) {
return i - T.length;
//这是j没有遍历完,说明子字符串未找到
} else {
return 0;
}
}
算法时间复杂度:O(m*n)