首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KMP算法模式计算问题

KMP算法模式计算问题
EN

Stack Overflow用户
提问于 2015-11-18 00:47:38
回答 1查看 117关注 0票数 0

这是我的代码和测试用例。我的问题是,KMP模式的值似乎永远不会增加,因为在上一次迭代中,我们检查了pattern[i] != pattern[j],在当前的循环中,if (j == -1) or (pattern[j] == pattern[i])不可能是真的,除非j == -1

代码语言:javascript
复制
def findPattern(pattern):

   j = -1
   next = [-1] * len(pattern)
   i = 0 # next[0] is always -1, by KMP definition

   while (i+1 < len(pattern)):
       if (j == -1) or (pattern[j] == pattern[i]):
           i += 1
           j += 1
           if pattern[i] != pattern[j]:
               next[i] = j
           else:
               next[i] = next[j]
       else:
           j = next[j]

   return next

if __name__ == "__main__":

   # print findPattern("aaaab")
   print findPattern("abaabc")

谢谢你,林

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-18 03:29:19

您已经增加了i和j,所以您实际上是在if (j == -1) or (pattern[j] == pattern[i])之后检查if (j == -1) or (pattern[j] == pattern[i])

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33769888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档