数据和算法【字符串】
串匹配和朴素匹配算法
t为目标串,p为模式串,字符串匹配就是在t中查找与p相同的子串的操作
朴素的串匹配算法
最简单的朴素匹配算法采用最直观可行的策略:1)从左到右逐个字符匹配;2)发现不匹配时,转去考虑目标串里的下一个位置是否与模式串匹配。
def naive_matching(t, p): m, n = len(p), len(t) i, j = 0, 0 while i < m and j < n: if p[i] == t[j]: i, j = i + 1, j + 1 else: i, j = 0, j + 1 - i if i == m: return j - i return -1
朴素匹配算法的效率低,根源在于把每次字符比较看作完全独立的操作,完全没有利用字符串本身的特点,也没有尽可能地利用前面已经做过的字符比较中得到的信息。
无回溯串匹配算法(KMP算法)
人生就是要不断折腾