当前位置: 首页 > news >正文

北京城乡建设学校网站七牛云直播

北京城乡建设学校网站,七牛云直播,重庆市建设工程质量信息网,中山网站建设思(一)前言所谓的字符串匹配就是在一个长字符串(可称文本T)中找一个短字符串(可称模式P)#xff0c;看长字符串中是否存在短字符串#xff0c;若存在则返回出现的第一个位置#xff0c;若不存在则返回一个标记。字符串搜索算法有很多#xff0c;比较知名的自然是大名鼎鼎Knut… (一)前言所谓的字符串匹配就是在一个长字符串(可称文本T)中找一个短字符串(可称模式P)看长字符串中是否存在短字符串若存在则返回出现的第一个位置若不存在则返回一个标记。字符串搜索算法有很多比较知名的自然是大名鼎鼎Knuth-Morris-Pratt 算法(简称 KMP)和Boyer-Moore(简称BM)。关于这两个算法的实现比较复杂需要很多的前置知识不在这里长篇大论有兴趣的同学可自行搜索。今天给大家介绍一个相对高效且简单的Horsepool算法Horsepool算法是Boyer-Moore算法的简化版本为了方便理解Horsepool算法我们先从朴素字符串匹配算法谈起。(二)朴素(暴力)字符串匹配算法先看朴素的字符串匹配算法的过程算法规则用ij表示两字符串正在比较的字符位置。若长字符串与短字符串该位置字符匹配则继续比较二者后面的字符即i加1j加1。不匹配分别回溯ij。这个算法非常朴素通常性能极差。最坏情况举例aaaaaaaab和aaab匹配需要重复比较字符多次。朴素搜索Python实现# txt 长字符串pat 短字符串def forceSearch(txt, pat): M len(txt) N len(pat) for i in range(M-N1): for j in range(N): if txt[ij]!pat[j]: break else: return i return (三)Horspool算法Horspool算法把短字符串(以下简称模式P)与长字符串(以下简称文本T)的开头字符对齐从模式P的最后一个字符开始比较如果尝试比较失败了它把模式P向后移。每次尝试过程中比较是从右到左的。假设对齐后文本T中最后一个对齐字符为X(代表任意字符)Horspool算法根据X的不同情况来确定移动距离(朴素算法每次不匹配只右移一位)无论X是否和模式的最后一个字符相匹配一般来说会存在下面四种情况情况1如上图所示对齐后文本T中最后一个字符对齐X为o与模式P最后一个字符g不匹配且模式P中不存在X(也就是字母o)模式P的移动长度就是它的全部长度移到所示的位置。情况2如上图所示对齐后文本T的最后一个对齐字符X为e恰好和模式P最后一个字符匹配。但是从右向左比较时有字符不匹配比如此时的o和a不匹配。由于模式P中只包含一个字符X(也就是e)模式P的移动长度就是它的全部长度移到所示的位置。情况3如上图所示对齐后文本T的最后一个对齐字符X为a与模式P最后一个字符g不匹配。移动时应该把模式P中最右边的X(a)和文本中的X(a)对齐。情况4如上图所示对齐后文本T的最后一个对齐字符X为a与模式P最后一个字符a匹配但是从右向左比较时有字符不匹配比如此时的n和i不匹配。移动时应把模式P除X(a)外最右边字符X(a)和文本T中的X(a)对齐。综上所述比起朴素算法每次总是移动一个位置从右到左的字符比较使模式不匹配时可以移动得更远。然而如果在每次尝试时都必须检查模式P中的每个字符来确定移动距离它的优势也会丧失殆尽。我们可以预先算出遇到某个字符要移动的距离并把它存在一个表中。示例如下对于模式BARBER移动距离如下表所示这里对字符AB做一下解释方便还没有理解的同学加深理解。若对齐后文本T的最后一个对齐字符X为AA与R不匹配BARBERA与结尾处R字符距离为4。若对齐后文本T中最后一个对齐字符X为BB与R不匹配BARBER最右边B与结尾处R字符距离为2。若对齐后文本T中最后一个对齐字符X不在模式P中则移动距离为模式P长度6。Horspool算法Python实现def horspool(txt,pat): n len(txt) m len(pat) table [m]*96 #ascii中可打印字符有96且前32为控制字符 for i in range(m - 1): table[ord(pat[i]) - 32 ] m -1 - i #从左至右扫描模式相同字符的最后一次改写恰好是该字符在模式串的最右边 i m - 1 while i n - 1: k 0 while k m-1 and pat[m - 1 - k] txt[i - k]: k 1 #向左比较下一个字符 if k m: return i - m 1 #匹配成功返回索引 else: i table[ord(txt[i]) - 32] #根据表格移动模式串 return -1(四)参考文献[1]https://blog.csdn.net/khwkhwkhw/article/details/51288502[2]https://www.runoob.com/python/python-for-loop.html[3]https://www.asklib.com/view/fbef10420ab8.html[4]https://blog.csdn.net/gilzhy/article/details/16803993[5]https://ethsonliu.com/2018/04/kmp.html
http://www.zqtcl.cn/news/440274/

相关文章:

  • 做招聘网站赚钱吗厦门网站建设哪里好
  • 新乡网站建设哪家公司好阿里巴巴做国际网站多少钱
  • 怎么在悉尼做网站dede做手机网站
  • 企业网站模板免费下载品牌建设专家库推荐表
  • 辽宁智能网站建设推荐网络营销推广方案创意
  • 安阳做一个网站多少钱东营做网站公司
  • 深圳市罗湖网站建设百度自助建站官网
  • 网站开发安装环境网站建设销售话术
  • 网站权重网站栏目划分的原则
  • 国际网站建设的目的我的百度账号登录
  • 温州网站设计定制博客和网站的区别
  • 益阳建设网站wordpress加载图片慢
  • 网站官网阜新网站开发公司
  • 适合做网站的图片印刷公司网站模板
  • 南昌哪家网站建设最好网站建设的方法有
  • 东莞做网站 动点官网百度开户流程
  • 中力建设网站怎么做自己的门户网站
  • 做的网站必须放做音乐网站的目地
  • 网站备案下来以后怎么做网页万网创始人张向东
  • 怎么做网站官方电话品牌营销策划十大要点
  • 上海自适应网站深圳网络推广外包
  • 网站的建设模式是指什么时候开始外网视频网站做泥声控
  • 免费在线观看电影电视剧网站网站建设公司哪家好 在线磐石网络
  • 域名是建网站之前申请吗怎么查看网站开发语言
  • 网站建设业务的延伸性查企业信息查询平台官网免费
  • 网站如何制作的渭南网站建设推广
  • 网站的ico怎么做简单房地产网站
  • 做室内设计通常上的网站关键词挖掘查询工具爱站网
  • 大理住房和城乡建设部网站为食堂写个网站建设
  • 做网站要icp备案吗软件定制开发 报价