题目描述:
KMP算法(Python3实现)
输入描述:
主字符串s=“aababaaab”
模式串 p=“aaac”
输出描述:
False
代码:
def getNext(s):
next=[0]*(len(s)+1)
next[0]=-1
i=0
j=-1
while(i<len(s)):
if j==-1 or s[i]==s[j]:
i+=1
j+=1
next[i]=j
else:
j=next[j]
return next
def kmp(s,p):
i,j=0,0
next=getNext(p)
while(i<len(s) and j<len(p)):
if s[i]==p[j] or j==-1:
i+=1
j+=1
else:
j=next[j]
if j==len(p):
return True
else:
return False
def main():
s="aababaaab"
p="aaac"
print(kmp(s,p))
if __name__=="__main__":
main()