首页 > 解决方案 > 字符串匹配 KMP

问题描述

我正在尝试为 KMP 算法编写 lps 函数。但是,我收到了这个错误。

if pattern[i] == pattern[j]:
TypeError: list indices must be integers or slices, not str

这是我的代码

def get_lps(pattern):

    pattern = list(pattern)
    lps = [0 for i in range(len(pattern))]
    i = 1
    j = 0
    while i!= len(pattern) :
        if pattern[i] == pattern[j]:
            lps[i] = j + 1
            i += 1
            j += 1

        else :
            if j!= 0:
                j = pattern[j-1]
            else:
                lps[i] = 0
                i += 1

    return lps
print(get_lps("abcabcaa"))

标签: python-3.x

解决方案


推荐阅读