栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

字符串匹配算法(Python)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串匹配算法(Python)

BF(暴力搜索算法)

将两个串 A 和串 B,依次循环实现两个串的模式匹配过程

def BF(s,p):
	# 判断串p在不在串s中
	n1 = len(s)
	n2 = len(p)
	i,j = 0,0
	while i < n1 and j < n2:
		if s[i] == p[j]:
			i += 1
			j += 1
		else:
			i = i - j + 1
			j = 0
	if j == n2:
		return i - j
	else:
		return -1

if __name__ == "__main__":
	result = BF("abcab","cab")
	print(result)
"""
results:
	2
"""
KMP算法

KMP算法原理讲解

大家可以看上面链接的视频,来了解KMP算法的原理,下面是代码

def get_next(p):
	next = [0]
	now = 0
	x = 1
	while x < len(p):
		if p[now] == p[x]:
			now += 1
			x += 1
			next.append(now)
		elif p[now] != p[x] and now != 0:
			now = next[now-1]
		elif p[now] != p[x] and now == 0:
			next.append(0)
			x += 1
	return next

def KMP(s,p):
	i,j = 0,0
	next = get_next(p)
	while i < len(s) and j < len(p):
		if s[i] == p[j]:
			i += 1
			j += 1
		elif s[i] != p[j] and j != 0:
			j = next[j-1]
		elif s[i] != p[j] and j == 0:
			i += 1
	
	if j == len(p):
		return i-j
	else:
		return -1

if __name__ == "__main__":
	result = KMP("abcab","cab")
	print(result)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号