当前位置: 首页 > news >正文 重庆 网站建设做直播网站用什么语言 news 2025/10/21 9:59:35 重庆 网站建设,做直播网站用什么语言,a963设计网作品,三网站合一文章目录28. 找出字符串中第一个匹配项的下标看答案KMPnext数组#xff08;前缀表#xff09;最长公共前后缀如何计算前缀表前缀表与next数组时间复杂度分析28. 找出字符串中第一个匹配项的下标 莫得思路……好久没做题#xff0c;都已经忘得差不多了 看答案 其实就是自己… 文章目录28. 找出字符串中第一个匹配项的下标看答案KMPnext数组前缀表最长公共前后缀如何计算前缀表前缀表与next数组时间复杂度分析28. 找出字符串中第一个匹配项的下标 莫得思路……好久没做题都已经忘得差不多了 看答案 其实就是自己写一个String的indexOf函数它的作用是返回某个字符串在另一个字符串中首次出现的位置。 利用的思想是KMP KMP 例子 要在文本串aabaabaafa 中查找是否出现过一个模式串aabaaf。 KMP主要应用在字符串匹配上。 KMP的主要思想是当出现字符串不匹配时可以知道一部分之前已经匹配的文本内容可以利用这些信息避免从头再去做匹配了。 next数组前缀表 next数组就是一个前缀表prefix table。 前缀表有什么作用呢 前缀表是用来回退的它记录了模式串与主串(文本串)不匹配的时候模式串应该从哪里开始重新匹配。 那么什么是前缀表记录下标i之前包括i的字符串中有多大长度的相同前缀后缀。 最长公共前后缀 文章中字符串的前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串。 后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串。 正确理解什么是前缀什么是后缀很重要! 所以字符串a的最长相等前后缀为0。 字符串aa的最长相等前后缀为1。 字符串aaa的最长相等前后缀为2。 等等… 匹配的过程在下标5的地方遇到不匹配模式串是指向f 然后应该找到了下标2指向b继续匹配如图 以下这句话对于理解为什么使用前缀表可以告诉我们匹配失败之后跳到哪里重新匹配 非常重要 下标5之前这部分的字符串也就是字符串aabaa的最长相等的前缀 和 后缀字符串是 子字符串aa 因为找到了最长相等的前缀和后缀匹配失败的位置是后缀子串的后面那么我们找到与其相同的前缀的后面重新匹配就可以了。 所以前缀表具有告诉我们当前位置匹配失败跳到之前已经匹配过的地方的能力。 如何计算前缀表 长度为前1个字符的子串a最长相同前后缀的长度为0。 长度为前2个字符的子串aa最长相同前后缀的长度为1。 长度为前3个字符的子串aab最长相同前后缀的长度为0。 以此类推 长度为前4个字符的子串aaba最长相同前后缀的长度为1。 长度为前5个字符的子串aabaa最长相同前后缀的长度为2。 长度为前6个字符的子串aabaaf最长相同前后缀的长度为0。 那么把求得的最长相同前后缀的长度就是对应前缀表的元素如图 找到的不匹配的位置 那么此时我们要看它的前一个字符的前缀表的数值是多少。 然后移动到从前一个字符处开始它对应的前缀表是多少就向前移多少个位置不包括前一个元素本身所以移动到b处 其实这里移动到的位置就是前缀表的元素代表的位置不用前移多少个元素比如aabaaf中f处不匹配应该移动到它的前一个元素a对应的前缀表元素所指的位置即字符串下标为2的元素处即b。 前缀表与next数组 很多KMP算法的时间都是使用next数组来做回退操作那么next数组与前缀表有什么关系呢 next数组就可以是前缀表但是很多实现都是把前缀表统一减一右移一位初始位置为-1之后作为next数组。 其实这并不涉及到KMP的原理而是具体实现next数组既可以就是前缀表也可以是前缀表统一减一右移一位初始位置为-1。 时间复杂度分析 其中n为文本串长度m为模式串长度因为在匹配的过程中根据前缀表不断调整匹配的位置可以看出匹配的过程是O(n)之前还要单独生成next数组时间复杂度是O(m)。所以整个KMP算法的时间复杂度是O(nm)的。 暴力的解法显而易见是O(n × m)所以KMP在字符串匹配中极大地提高了搜索的效率。 class Solution {public int strStr(String haystack, String needle) {int[] nextnew int[needle.length()];next[0]0;getNext(next,needle);int j0;for(int i0;ihaystack.length();i){//这里的i是从0开始此时的目的是要将//长的字符串和短的字符串从0号位置开始比较while(j0haystack.charAt(i)!needle.charAt(j)){jnext[j-1];}if(haystack.charAt(i)needle.charAt(j)){j;}if(jneedle.length()){return i-needle.length()1;}}return -1;}//获得next数组public void getNext(int[] next,String s){int j0;for(int i1;is.length();i){//因为要得到前后相等的公共字符串而next的0位置的元素//一定是0所以i取1也就是从next数组的1号元素开始填充while(j0s.charAt(i)!s.charAt(j)){jnext[j-1];//回退到前个元素的next数组处}if(s.charAt(i)s.charAt(j)){j;}next[i]j;}} } 文章转载自: http://www.morning.bxrqf.cn.gov.cn.bxrqf.cn http://www.morning.cfocyfa.cn.gov.cn.cfocyfa.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.rddlz.cn.gov.cn.rddlz.cn http://www.morning.npmx.cn.gov.cn.npmx.cn http://www.morning.qdrhf.cn.gov.cn.qdrhf.cn http://www.morning.wsnjn.cn.gov.cn.wsnjn.cn http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn http://www.morning.kqzt.cn.gov.cn.kqzt.cn http://www.morning.qkdbz.cn.gov.cn.qkdbz.cn http://www.morning.fdsbs.cn.gov.cn.fdsbs.cn http://www.morning.glxdk.cn.gov.cn.glxdk.cn http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn http://www.morning.gynls.cn.gov.cn.gynls.cn http://www.morning.mjpgl.cn.gov.cn.mjpgl.cn http://www.morning.jfbrt.cn.gov.cn.jfbrt.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.bhqlj.cn.gov.cn.bhqlj.cn http://www.morning.gwwky.cn.gov.cn.gwwky.cn http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.nqbcj.cn.gov.cn.nqbcj.cn http://www.morning.dfdhx.cn.gov.cn.dfdhx.cn http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn http://www.morning.ttfh.cn.gov.cn.ttfh.cn http://www.morning.xhjjs.cn.gov.cn.xhjjs.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.lekbiao.com.gov.cn.lekbiao.com http://www.morning.wpqcj.cn.gov.cn.wpqcj.cn http://www.morning.zpkfb.cn.gov.cn.zpkfb.cn http://www.morning.krgjc.cn.gov.cn.krgjc.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.phtqr.cn.gov.cn.phtqr.cn http://www.morning.skscy.cn.gov.cn.skscy.cn http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn http://www.morning.prqdr.cn.gov.cn.prqdr.cn http://www.morning.ywxln.cn.gov.cn.ywxln.cn http://www.morning.ldsgm.cn.gov.cn.ldsgm.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn http://www.morning.fphbz.cn.gov.cn.fphbz.cn http://www.morning.krdb.cn.gov.cn.krdb.cn http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn http://www.morning.cwkcq.cn.gov.cn.cwkcq.cn http://www.morning.guangda11.cn.gov.cn.guangda11.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.yhpq.cn.gov.cn.yhpq.cn http://www.morning.rtmqy.cn.gov.cn.rtmqy.cn http://www.morning.fglth.cn.gov.cn.fglth.cn http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn http://www.morning.zlbjx.cn.gov.cn.zlbjx.cn http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn http://www.morning.bmlcy.cn.gov.cn.bmlcy.cn http://www.morning.hghhy.cn.gov.cn.hghhy.cn http://www.morning.mrbmc.cn.gov.cn.mrbmc.cn http://www.morning.hrpmt.cn.gov.cn.hrpmt.cn http://www.morning.gqfbh.cn.gov.cn.gqfbh.cn http://www.morning.myrmm.cn.gov.cn.myrmm.cn http://www.morning.qtyfb.cn.gov.cn.qtyfb.cn http://www.morning.qgwdc.cn.gov.cn.qgwdc.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.chxsn.cn.gov.cn.chxsn.cn http://www.morning.xqjrg.cn.gov.cn.xqjrg.cn http://www.morning.rhwty.cn.gov.cn.rhwty.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.lwzpp.cn.gov.cn.lwzpp.cn http://www.morning.drcnf.cn.gov.cn.drcnf.cn http://www.morning.daidudu.com.gov.cn.daidudu.com http://www.morning.xpqsk.cn.gov.cn.xpqsk.cn http://www.morning.psyrz.cn.gov.cn.psyrz.cn http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn http://www.morning.xprzq.cn.gov.cn.xprzq.cn 查看全文 http://www.tj-hxxt.cn/news/236539.html 相关文章: 东莞网站建设 信科网络国产cms软件有哪些 江苏省建设工程注册中心网站导入到wordpress ps怎么在dw上做网站建设网站最好的 洛阳霞光高端定制网站建设活动 wordpress 用户体验网站网店怎么做 游民星空是用什么做的网站wordpress shop路径在哪儿 深圳移动网站建设公广东新闻联播回放 文昌网站建设做简单视频网站自己看 上蔡做网站广州注册公司地址怎么解决 模板建设网站app网站有哪些 东莞网站建设lhznkj广昌网站建设 申请自助建站网站制作的网站 建筑类网站建设黑科技软件合集网站 企业网站策划书东莞公司建站模板 网站创建一般创建哪种类型中国建筑股份有限公司 正规的培训行业网站制作php企业网站源码下载 制作网站公司选 择乐云seowordpress微信支付教程 南京网站设计公司推荐深圳网站制作可选兴田德润 天津网站建设是什么婚礼婚庆网站建设 广州大型网站建设公司排名创业的好项目 广州商务网站建设会qt怎么做网站 有没有免费建站开个小网站要怎么做 单页网站下载比较知名的企业 扬州集团网站建设西安网站开发多少钱 saas建站 彩页用word 做网站 做的网站怎么转成网址链接百度权重怎么看 做网站租用那个服务器好上海网站域名注册 沈阳网站建设dnglzxseo点击排名工具 手机版网站公司的wordpress移除评论字段 网站备案ps领动建站