数据和算法【字符串】

串匹配和朴素匹配算法

  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算法)

  https://www.cnblogs.com/yjiyjige/p/3263858.html

人生就是要不断折腾
原文地址:https://www.cnblogs.com/xiangxiaolin/p/13514762.html