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

做网站要买数据库中国最贵的域名交易

做网站要买数据库,中国最贵的域名交易,site网站连通率0%怎么解决,记事本怎么做网站KMP算法,字符串匹配算法,给定一个主串S,和一个字串T,返回字串T与之S匹配的数组下标。 在学KMP算法之前,对于两个字符串,主串S,和字串T,我们根据暴力匹配,定义两个指针,i指…

KMP算法,字符串匹配算法,给定一个主串S,和一个字串T,返回字串T与之S匹配的数组下标。

在学KMP算法之前,对于两个字符串,主串S,和字串T,我们根据暴力匹配,定义两个指针,i指向主串S的起始,j指向字串T的起始,依次比较,如果主串i位置的值等于子串j位置的值,i++,j++。直到i位置的值和j位置的值不相同,i回溯到起始位置+1,同时字串T的起始位置后移到i所在位置。直到匹配成功,或者子串T后移长度+T本身长度>S主串的长度。这个暴力求解的复杂度,因为有i的回溯,需要2层循环i,j的移动,因此时间复杂度为T(n*m),n是S的长度,m是T的长度。

根据暴力匹配的思想,我们接下来分析一下KMP算法。同样两个字符串按位比较,而KMP算法的核心在于,当主串的i位置的值和子串的j位置的值不同时,主串S,i前面的字符串与字串T,j前面的字符串已经匹配相等,因为两者相等,所以只需要拿出子串T前面的字符串,根据T前面的字符串来计算一个next[j]数组,将j回溯即可。问题便转换为求子串的next[j]数组。那么next[j]数组的求法为,i前面的字符串,分别取前缀和取后缀,如果前缀的长度=后缀的长度,则j的值=字符串缀长+1存入next数组。否则,j回溯给next[j]。直到j=字串长度,则next数组计算完成。后续根据i不回溯,j从next数组里取值,便可将字串T和主串S进行匹配,直到字串T移出到主串S的长度,匹配成功返回i下标,匹配失败返回0。因为KMP算法简化了问题的求解,将难点转换为求next数组,并且i不回溯,可以做到边移动边匹配。因此,时间复杂度为T(n+m)

下面是JAVA实现代码

  public static void main(String[] args) {String S  = "abababcabcabc";String T  = "bcabc";int pos = KMP(S,T);System.out.println(pos);}private static int KMP(String s, String t) {int i = 0;//i指向Sint j = 0;//j指向Twhile (i<s.length()&&j<t.length()){if(j==-1||s.charAt(i)==t.charAt(j)){//为什么j==-1,i和j也需要后移,当j==-1,说明字串和主串的起始点在0,i++;//i后移j++;//j后移}else{j = getNext(t)[j]; //j根据t求一个next数组,next数组的作用就是j根据内部的值回溯。}}if(j == t.length()){  //j已经等于t的长度了,说明匹配结束了。return i-t.length();  //字串起始点就是i-j或者i-t.length()}else{return -1;//匹配失败了。}}private static int[] getNext(String t) {int i = 0;//next数组下标,初始值0int j = -1;//j指向字符串t,初始值-1int [] next = new int[t.length()];//构造next数组,长度为t的长度。next[0] = -1;//next数组从1开始存值,即0号位置存默认值-1;while (i<t.length()-1){if(j==-1||t.charAt(i)==t.charAt(j)){//j==-1表示从头开始遍历t,或者t的前缀==t的后缀,都要将j+1存入next数组i++;j++;next[i] =  j;  //如果后缀==前缀,将j+1,即j++的值存入next数组。}else {j = next[j]; //如果后缀!=前缀,j回溯到next[j]位置}}return next;}

输出结果:

5

完全正确。

http://www.yayakq.cn/news/302324/

相关文章:

  • 做一个自己的网站需要什么自助商城
  • 微网站建设是什么最新军事新闻12小时
  • 国外网站建设的研究现状网站建设公司的市场定位
  • 手机网站创建shopify是什么平台
  • 会计上大额网站费如何做分录苏州注册网络公司价格
  • 六安网站建设电话建设银行租房网站
  • 影视自助建站免费店铺logo设计生成器
  • 厦门网站制作开发收费衡水网站设计
  • 简述制作网站的步骤和过程律师网站建设公司
  • 模板网站建设制作如何做网站赚
  • 池州市建设工程造价管理网站深圳市工程建设网站
  • 中山网站设计素材WordPress章节插件
  • 一般做网站需要多少钱做网站策划
  • 网站后台 更新缓存深圳建设局官网站
  • 帮开设赌场的网站做美工网站页中繁体转移代码
  • 怎么做仲博注册网站手机端企业网站源码
  • 网站友链是什么情况建筑网站的功能模块有哪些
  • 专业微网站电话号码济宁优化公司
  • 高端网站建设专业公司网站开发php 图片上传失败
  • 网站推广的8种方法特种作业证查询官网
  • 做网站最好的工具做车身拉花的网站
  • seo推广的网站和平台有哪些如何分析网站关键词
  • 一页式网站模板天将建设集团有限公司网站
  • 连云港市建设工程安全监督站网站北京高端品牌网站建设
  • 网站运营与公司简介旅游网站建设目标分析
  • 专业律所网站建设小制作小发明大全简单
  • wordpress会员付费插件百度快速排名优化技术
  • 网站开发的ie兼容做到9媒体网站建设
  • 关于服装的网站规划与设计河池市城乡住房建设厅网站
  • 硬件开发岗位要求上海牛巨微seo关键词优化