猫史档案馆


【Python作品分享】BF(喵匹配)算法【教程贴】

用户:泯生闪月泯生闪月查看:0 回复:3 评论:0 创建时间:2023-08-04T09:49:42


【作品展示】

center_image

 

【作品介绍】

使用BF喵匹配算法,进行字符串匹配返回模式串在主串中第一次出现的索引位置

 

【作品源代码】

def BF(a, b):
    for i in range(len(a)-len(b)+1):  # 循环最糟糕的可能(即需要完整遍历主串)次
        c = True  # 用于在循环结束后判断是否匹配成功
        for j in range(i, len(b)+i):  # 循环模式串的长度次,如果上一次对齐没有匹配成功或是第一次进行匹配,则进行对齐
            # 每次后移一位
            if a[j] == b[j-i]:  # 对每个已对齐位进行对比
                continue  # 如果成功,则匹配状态为True,即当前状态,无需更新状态,并进入下轮循环
            else:  # 不成功
                c = False  # 重新设置匹配状态
                break  # 退出匹配的循环
        if c:
            '''
            此时已经退出匹配循环
            如果退出前的匹配状态为True,说明是自然退出,而非匹配失败后退出
            返回模式串的第一个元素与主串的对齐点
            '''
            return i
    '''
    由于return后面的代码都不会被执行,所以当程序执行完了整个模式串的后移过程后,
    仍然没有返回才会退出循环,进入这一部分
    此时说明主串中不含模式串,返回None
    '''
    return None


print(BF(input(), input()))

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 1下一页
泯生闪月泯生闪月

自己实测没有BUG

那个喵的原本内容是(暴 *    * 力

点赞0


评论


泯生闪月泯生闪月

如有BUG欢迎指出

欢迎打脸

点赞0


评论


泯生闪月泯生闪月

center_image

点赞0


评论