bf算法和kmp算法
def BF(s,p):
LIST = []
's:字符串,p:模式串'
l_s = len(s)
l_p = len(p)
print(l_s)
for i in range(l_s-l_p+1):
index = i
for j in range(l_p):
if s[index] == p[j]:
index +=1
else:
break
if index-i == l_p:
LIST.append(i)
return LIST
if __name__=='__main__':
S= 'ADFDFEDFDFD'
P= 'FD'
num = BF(S,P)
print(num)
def kmp(s,p):
nex = getnex(p)
i=j=0
while(i<len(s) and j<len(p)):
if j==-1 or s[i]==p[j]:
i+=1
j+=1
else:
j=nex[j]
if j==len(p):
return i-j
else:
return -1
def getnex(p):
nex = [0]*len(p)
nex[0]=-1
i=0
j=-1
while(i<len(p)-1):
if j==-1 or p[i]==p[j]:
i+=1
j+=1
nex[i]=j
else:
j=nex[j]
return nex