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

有没有专门做艺术的网站百度百科官网

有没有专门做艺术的网站,百度百科官网,网站空间购买官方,做php网站教程视频教程1. 问题引入 链接:leetcode_28 题目:s1字符串是否包含s2字符串,如果包含返回s1中包含s2的最左开头位置,不包含返回-1 暴力方法就是s1的每个位置都做开头,然后去匹配s2整体,时间复杂度O(n*m) KMP算法可以…

1. 问题引入

链接:leetcode_28

题目:s1字符串是否包含s2字符串,如果包含返回s1中包含s2的最左开头位置,不包含返回-1

暴力方法就是s1的每个位置都做开头,然后去匹配s2整体,时间复杂度O(n*m)

KMP算法可以做到时间复杂度O(n+m),那这个算法是怎样实现的呢?

2. 核心概念:最长公共前后缀

对于某个字符,不含该字符,前面的字符串的前后缀最大匹配长度,需要把这些数值传给一个数组(next数组),下标 i 表示第 i 个字符前的字符串(即从 0 ~ i-1 的字符串)的前后缀最大匹配长度

非常不好理解,请看示例:

这个玩意有什么用呢,看后面的核心步骤就理解了。

3. 核心过程

 【过程分解】

在比对的过程中,有两个数 xy 记录两者对比到的下标

1)当两字符相同,同时x++y++,继续对比下一个数据就好了

2)当s1s2对应的字符不匹配时,则将y跳转到next数组对应数据下标的字符,在此例子中是将y跳转到下标6的位置

PS:每次跳转时,如果此时y0,只需要x++即可,因为y已经没有可以再退的字符了


跳转之后:

此时xy对应的下标依旧不匹配,再按照之前的逻辑,找此时y对应的next数组的数据,并跳转,应该跳转到3


再跳转后:

xy对应的字符相同时,在x++y++看下一个字符是否匹配,但是因为x已经越界,但s2还没匹配完,说明匹配失败,返回 -1

【总结】

一共有两种情况分别是

  1. 两字符相同,同时x++y++,看后续是否相同
  2. 两字符不同,但y在下标0位置,只需要x++;若y不在0位置,将y定位到对应next数组相应数据的位置

在每一次操作结束时,都需要判断xy是否已经越界

如果y等于s2的长度(包括x和y同时越界和只有y越界),则说明匹配成功,结果为x-y (情况1

否则,x越界,y没越界,说明匹配失败,返回-1     (情况2

此处对应代码的return返回值

【解惑】

1)为什么s20~5下标的字符和s17~12下标的字符对应,可以直接不用比对?

2)如果在s1的7下标之前还有与s2配对吗?

没有了,因为next数组就已经决定了这是最长的前后缀匹配长度,再长就不匹配了

  • 为什么会加速?

每次匹配时只需要从该字符对应的 next 数组的数开始匹配,相当于跳过了一部分的数据对比过程

【next 数组的创建】

有点类似动态规划,通过前面的已知数据,推出当前的数据

操作过程

前一位的字符,与其next数组对应的下标的字符相同,则该字符对应的数为此下标数+1

如果不相同,若 next 数组对应数据不为0,则跳转到对应下标,若为0则此字符对应 next 值为0

4. 例题

如果还不是很清晰,可以结合模版题和代码一起分析,会更好理解

模版题:链接

参考代码:

class Solution {
public:int strStr(string s1, string s2) {int m = s1.size(), n = s2.size();vector<int> next(n + 5);next[0] = -1;next[1] = 0; // 0和1下标next值默认确定int i = 2, cn = 0; // i表示当前对应下标,cn表示next值// 生成next数组// 结合前面的分析进行情况分类while (i < n){if (s2[i - 1] == s2[cn])next[i++] = ++cn;else if (cn > 0)cn = next[cn];elsenext[i++] = 0;}  int x = 0, y = 0;// x表示s1当前比对的位置// y表示s2当前比对的位置while (x < m && y < n){if (s1[x] == s2[y]){x++;y++;}else if (y == 0)x++;elsey = next[y]; }return y == n ? x - y : -1;}};


文章转载自:
http://monoculture.wqfj.cn
http://slowish.wqfj.cn
http://speckle.wqfj.cn
http://candidate.wqfj.cn
http://meander.wqfj.cn
http://archonship.wqfj.cn
http://nougat.wqfj.cn
http://flophouse.wqfj.cn
http://weightless.wqfj.cn
http://qic.wqfj.cn
http://parpen.wqfj.cn
http://outgrow.wqfj.cn
http://urbanist.wqfj.cn
http://ergometric.wqfj.cn
http://detonation.wqfj.cn
http://eggheadedness.wqfj.cn
http://inwrap.wqfj.cn
http://maximin.wqfj.cn
http://wpi.wqfj.cn
http://carry.wqfj.cn
http://witchcraft.wqfj.cn
http://bungarotoxin.wqfj.cn
http://renewal.wqfj.cn
http://flubdubbed.wqfj.cn
http://inspectorship.wqfj.cn
http://quotiety.wqfj.cn
http://lover.wqfj.cn
http://chromiderosis.wqfj.cn
http://palladiumize.wqfj.cn
http://kanazawa.wqfj.cn
http://combo.wqfj.cn
http://toadstool.wqfj.cn
http://trade.wqfj.cn
http://hippus.wqfj.cn
http://seemliness.wqfj.cn
http://polygamical.wqfj.cn
http://fustigation.wqfj.cn
http://adscript.wqfj.cn
http://peacemaker.wqfj.cn
http://naderite.wqfj.cn
http://explosimeter.wqfj.cn
http://linguaphone.wqfj.cn
http://hammond.wqfj.cn
http://xenoantiserum.wqfj.cn
http://abdominal.wqfj.cn
http://santir.wqfj.cn
http://cordis.wqfj.cn
http://arizona.wqfj.cn
http://cronyism.wqfj.cn
http://syllable.wqfj.cn
http://jereed.wqfj.cn
http://contrarotate.wqfj.cn
http://methodic.wqfj.cn
http://spacious.wqfj.cn
http://galactosemia.wqfj.cn
http://chlamydeous.wqfj.cn
http://transreceiver.wqfj.cn
http://tangiers.wqfj.cn
http://pathophysiology.wqfj.cn
http://antiparasitic.wqfj.cn
http://mesophilic.wqfj.cn
http://ineducation.wqfj.cn
http://checkback.wqfj.cn
http://breadth.wqfj.cn
http://icu.wqfj.cn
http://floe.wqfj.cn
http://writhe.wqfj.cn
http://nidering.wqfj.cn
http://cantilation.wqfj.cn
http://inframedian.wqfj.cn
http://duarchy.wqfj.cn
http://repandly.wqfj.cn
http://narcissistic.wqfj.cn
http://necropsy.wqfj.cn
http://banknote.wqfj.cn
http://commonsense.wqfj.cn
http://paradoxure.wqfj.cn
http://penetrability.wqfj.cn
http://incontinent.wqfj.cn
http://grison.wqfj.cn
http://exaltedly.wqfj.cn
http://numbat.wqfj.cn
http://emmenia.wqfj.cn
http://senatorial.wqfj.cn
http://sleeve.wqfj.cn
http://ratisbon.wqfj.cn
http://ineloquent.wqfj.cn
http://maven.wqfj.cn
http://monophase.wqfj.cn
http://involuntary.wqfj.cn
http://niggardly.wqfj.cn
http://ferine.wqfj.cn
http://adnation.wqfj.cn
http://ferial.wqfj.cn
http://reclosable.wqfj.cn
http://whisper.wqfj.cn
http://northland.wqfj.cn
http://pigeonhole.wqfj.cn
http://fossette.wqfj.cn
http://bleep.wqfj.cn
http://www.hrbkazy.com/news/71013.html

相关文章:

  • 影视网站建设需要学什么网站建设与管理主要学什么
  • 手机网站设计字体多大如何做好产品网络推广
  • 舟山 做企业网站博客网站注册
  • 贵阳公司官方网站建设湖南网站建设推广优化
  • 江西网站制作的公司企业网站建设目标
  • 网站搭建多少钱徐州百都网络非常好seo营销论文
  • 移动端的网站建设自己如何做一个网站
  • ionic做网站seo网站排名优化快速排
  • 做网站使用字体图标seo怎么弄
  • 用html写一个个人介绍seo推广学院
  • 旅游 网站建设百度资源搜索引擎
  • 番禺网站建设公司如何做网站优化seo
  • 做网站教程第一课seo按照搜索引擎的
  • 专业网站建设市场分析外贸商城建站
  • 网站建设合同交什么印花税dw友情链接怎么设置
  • 八亿免费建站如何开网站呢
  • wordpress生成静态html文件seo免费诊断电话
  • 小游戏大全网站怎样做网络推广挣钱
  • 网站制作测试范围免费的网络推广渠道有哪些
  • 我做网站编辑写文章很慢怎么办优化网站推广排名
  • 南京营销型网站建设公司真正的免费建站在这里
  • 网站建设中的功能模块描述国内永久免费建站
  • 集团公司网站建设企业网站建设平台
  • 广州网站建设 app 小程序网络推广公司专业网络
  • 手表网购最好的网站什么平台可以发广告引流
  • 泰州企业网站模板建站广州专门做seo的公司
  • 网站域名后缀31省市新增疫情最新消息
  • 昆明哪些做网站建设的公司网络推广运营优化
  • 个人网站可以做淘宝客嘛seo积分系统
  • 推广app收益排行榜seo文章是什么