python BM

s = 'HERE IS A SIMPLE EXAMPLE'
p = 'EXAMPLE'
#s = 'qazwsxetgbdcrfvtgbatgb'
#p = 'tgbatgb'
d2 = 0
def 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值