python BM

来源:互联网 发布:1080a最新x站免费域名 编辑:程序博客网 时间:2024/06/06 05:58
s = 'HERE IS A SIMPLE EXAMPLE'p = 'EXAMPLE'#s = 'qazwsxetgbdcrfvtgbatgb'#p = 'tgbatgb'd2 = 0def bm(s, p):    global d2    n = len(s)    m = len(p)    #  print(n, m)    j = int(m) - 1    i = int(m) - 1    while j < n and i > 0:        if s[j] == p[i]:            #  print(s)            #  print(' ' * (j - i) + p + "1")            j -= 1            i -= 1        elif s[j] in p:            #  print(j)            #  print(i)            #  print(s)            # print(' ' * (j - i) + p + "2")            j3 = j + i - p.rindex(s[j])            #  print('--j3--' + str(j3))            i = int(m) - 1            j1 = 0            if i != m - 1:                if p[:i].index(p[i+1:]):                    d1 = p.index(p[i+1:])                    j1 = j + i - d1                else:                    for t in range(1, m-i):                        if p[:t] in p[m-t:]:                            d2 = t                    j1 = j + m - 1 - d2            #  print("j1--"+ str(j1))            if j1:                if j3 > j1:                    j = j3            else:                j = j3        else:            j = j + i + 1            #  print('--3--' + str(j))    if i == 0:        print(j)    else:        print("NONE")bm(s, p)
0 0