主串与模式串的匹配

主串与模式串的匹配

(1)BF算法:

      BF算法比较简单直观,其匹配原理是主串S.ch[i]和模式串T.ch[j]比较,若相等,则i和j分别指示串中的下一个位置,继续比较后续字符,若不相等,从主串S的下一个字符(i=i-j+2)起再重新和模式串T的第一个字符(j=1)比较。

 

(2)KMP算法:

      KMP算法相对BF会复杂一些,但对于计算机而言,这其实是减少很多不必要的匹对。在匹配失败时最大的移动模式串,以减少匹配次数,即当匹配失败时(S.ch[i]!=T.ch[j]),在模式串中已匹配的字符找出其长度最长的相同前后缀,假设其长度为k,则模式串T回溯到T.ch[k+1]与S.ch[i]匹对。

模式串前后缀相同个数
a0
ab0
abaa1
ababa、ab2
ababaa、ab、aba3

在作业题中,我用的是KMP算法进行匹配。考虑的当模式串第一位字符与主串字符不匹配时,若按原方法回溯会陷入死循环,所以讲next[0]初始为-1    

 

定义晚next函数后则定义KMP函数,仅需匹配时i++和j++,不匹配时i不变,j=next[j](将模式串回溯至k)重新开始进行匹配,直至匹配完成输出i-j+1(主串中的子串的第一个字符所在位置)

 

 

 

 

转载于:https://www.cnblogs.com/llhs/p/10703167.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是 DDoS 攻击?

欢迎访问网易云社区,了解更多网易技术产品运营经验。 全称Distributed Denial of Service,中文意思为“分布式拒绝服务”,就是利用大量合法的分布式服务器对目标发送请求,从而导致正常合法用户无法获得服务。通俗点讲就是利用网络…

nginx 并发过十万

一般来说nginx 配置文件中对优化比较有作用的为以下几项: worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数。 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每…

贝叶斯网络建模

I am feeling sick. Fever. Cough. Stuffy nose. And it’s wintertime. Do I have the flu? Likely. Plus I have muscle pain. More likely.我感到恶心。 发热。 咳嗽。 鼻塞。 现在是冬天。 我有流感吗? 可能吧 另外我有肌肉疼痛。 更倾向于。 Bayesian networ…

长春南关区净月大街附近都有哪些课后班?

长春南关区净月大街附近都有哪些课后班?在学校的教育不能满足广大学生的需求的时候,一对一辅导、文化课辅导、高考辅导等越来越多的家长和孩子的选择。相对于学校的大课教育,一对一辅导有着自身独特的优势,一对一辅导有着学校教学…

dev中文本框等获取焦点事件

<ClientSideEvents GotFocus"GotFocus" /> editContract.SetFocus()//设置文本框等的焦点 function GotFocus(s, e) { window.top.DLG.show(700, 600, "PrePayment/ContractSelect.aspx", "选择", null ); }…

数据科学家数据分析师_使您的分析师和数据科学家在数据处理方面保持一致

数据科学家数据分析师According to a recent survey conducted by Dimensional Research, only 50 percent of data analysts’ time is actually spent analyzing data. What’s the other half spent on? Data cleanup — that tedious and repetitive work that must be do…

神经网络使用情景

神经网络使用情景 人脸&#xff0f;图像识别语音搜索文本到语音&#xff08;转录&#xff09;垃圾邮件筛选&#xff08;异常情况探测&#xff09;欺诈探测推荐系统&#xff08;客户关系管理、广告技术、避免用户流失&#xff09;回归分析 为何选择Deeplearning4j&#xff1f; …

BZOJ4890 Tjoi2017城市

显然删掉的边肯定是直径上的边。考虑枚举删哪一条。然后考虑怎么连。显然新边应该满足其两端点在各自树中作为根能使树深度最小。只要线性求出这个东西就可以了&#xff0c;这与求树的重心的过程类似。 #include<iostream> #include<cstdio> #include<cmath>…

【国际专场】laravel多用户平台(SaaS, 如淘宝多用户商城)的搭建策略

想不想用Laravel来搭建一个多用户、或多租户平台&#xff1f;比如像淘宝那样的多商户平台呢&#xff1f;听上去很复杂&#xff0c;不是吗&#xff1f;怎么能一个程序&#xff0c;给那么多的机构用户来用呢&#xff1f;如何协调管理它们呢&#xff1f;数据库怎么搭建呢&#xff…

GitHub常用命令及使用

GitHub使用介绍 摘要&#xff1a; 常用命令&#xff1a; git init 新建一个空的仓库git status 查看状态git add . 添加文件git commit -m 注释 提交添加的文件并备注说明git remote add origin gitgithub.com:jinzhaogit/git.git 连接远程仓库git push -u origin master 将本地…

神经网络的类型

KNN DNN SVM DL BP DBN RBF CNN RNN ANN 概述 本文主要介绍了当前常用的神经网络&#xff0c;这些神经网络主要有哪些用途&#xff0c;以及各种神经网络的优点和局限性。 1 BP神经网络 BP (Back Propagation)神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的…

python db2查询_如何将DB2查询转换为python脚本

python db2查询Many companies are running common data analytics tasks using python scripts. They are asking employees to convert scripts that may currently exist in SAS or other toolsets to python. One step of this process is being able to pull in the same …

Dapper基础知识三

在下刚毕业工作&#xff0c;之前实习有用到Dapper&#xff1f;这几天新项目想用上Dapper&#xff0c;在下比较菜鸟&#xff0c;这块只是个人对Dapper的一种总结。 Dapper&#xff0c;当项目在开发的时候&#xff0c;在没有必要使用依赖注入的时候&#xff0c;如何做到对项目的快…

deeplearning4j

deeplearning4j 是基于java的深度学习库&#xff0c;当然&#xff0c;它有许多特点&#xff0c;但暂时还没学那么深入&#xff0c;所以就不做介绍了 需要学习dl4j&#xff0c;无从下手&#xff0c;就想着先看看官网的examples&#xff0c;于是&#xff0c;下载了examples程序&a…

PostgreSQL 11 1Kw TPCC , 1亿 TPCB 7*24 强压耐久测试

标签 PostgreSQL , tpcc , tpcb 背景 TPCC, TPCB是工业标准的OLTP类型业务的数据库测试&#xff0c;包含大量的读、写、更新、删除操作。 7*24小时强压耐久测试&#xff0c;主要看数据库在长时间最大压力下的 性能、稳定性、可靠性。 测试CASE &#xff1a; 1、1000万 tpcc 2、…

推理编程_答案集编程的知识表示和推理

推理编程Read about the difference between declarative and imperative programming and learn from code examples (Answer Set Programming, Python and C).了解声明式和命令式编程之间的区别&#xff0c;并从代码示例(答案集编程&#xff0c;Python和C)中学习。 介绍 (In…

给Hadoop初学者的一些建议

我们介绍了新手学习hadoop的入门注意事项。这篇来谈谈hadoop核心知识学习。 hadoop核心知识学习: hadoop分为hadoop1.X和hadoop2.X&#xff0c;并且还有hadoop生态系统。这里只能慢慢介绍了。一口也吃不成胖子。 那么下面我们以hadoop2.x为例进行详细介绍&#xff1a; Hadoop…

Guide AHOI2017 洛谷P3720

Description 农场主John最近在网上买了一辆新车&#xff0c;在购买汽车配件时&#xff0c;John不小心点了两次“提交”按钮。导致汽车上安装了两套GPS系统&#xff0c;更糟糕的是John在使用GPS导航时&#xff0c;两套系统常常给出不同的路线。从地图上看&#xff0c;John居住的…

稳坐视频云行业第一,阿里云将用边缘计算开辟新赛道

“CDN竞争的上半场已结束&#xff0c;中国视频云市场格局已定&#xff0c;边缘计算将成为下半场发展的新赛道。” 4月10日&#xff0c;阿里云视频云总经理、边缘计算负责人朱照远在第七届“亚太内容分发大会”暨CDN峰会表示。朱照远认为&#xff0c;阿里云依靠齐全的产品矩阵、…

爱因斯坦提出的逻辑性问题_提出正确问题的重要性

爱因斯坦提出的逻辑性问题We live in a world that values answers. We were taught in school to learn how to answer questions in exams, we were conditioned to go to work knowing that we need to have the answers and our society, by and large, focuses on finding…