BF1

发布时间 2023-10-17 17:34:13作者: 椹涧

from LinkString import LinkString
def BF1(s,t):
p=s.head.next
i,c,d=0,0,1
print('\n比较趟数;',d)
while p!=None: #两串未遍历完时循环
p1=p #目标串从下一个位置开始匹配
q=t.head.next
c+=1
print('比较次数;',c)
while p1!=None and q!=None and p1.data==q.data:
p1=p1.next
q=q.next
c+=1
print('比较次数;',c)
if q==None:
return i #返回匹配的第一个字符序号
p=p.next
# print('比较趟数;',i+1)
i+=1
d+=1
print('\n比较趟数;',d)
return -1

if __name__ == '__main__':
cstr1="aaaacabaa"
s=LinkString()
s.StrAssign(cstr1)
print("s: ",end='');s.DispStr()

cstr2="aaab"
t=LinkString()
t.StrAssign(cstr2)
print("t: ",end='');t.DispStr()

print("BF1: %d" %(BF1(s,t)))