字符串匹配中KMP算法的next数组构造与思考

2023-05-16

对于KMP算法的next算法,匹配规则i不动,j而是根据
next[j]=k。如果在j位置失配,则退到k位置。构造next数组的
是根据前缀与后缀的最长匹配。。。如ababaa 的next数组是
-100123.
所以上述代码改成
match(string s, string p)
    if s.length==0 || p.length==0
        return -1;//-1表示找不到
    if (p.length>s.length)
        return -1
    int i = 0
    int j =0
    int [] next = next(p)///求next数组
    while(i<s.length)
      if(j==-1 || s.charAt(i)==p.charAt(j)) //如果j=-1说明p的第一位无法匹配,是next[0]=-1
         i++;
         j++;
      else
         j=next[j]
      if(j==p.length)
         return (i-j)///这时候j最后,i也走到最后
    return -1

所以时间复杂度是o(m+n)的复杂度
int [] next(string p)
   int p_length = p.length
   int [] next = new int[p.length]
   char[] p = p.tochararray()
   next[0]=-1
   if(p.length==1)//进行判断防止下面越界
      return next;
   next[1]=0
   int j=1
   int k =next[j]//查看位置j的最长匹配在哪里

   while(j<p.length-1)
      if(k<0 || p[j]==p[k])//相等直接在原来基础上加一
          next[++j] ==++k;
      else ///不相等则回溯
          k = next[k]
   return next


next数组的含义,这个回退位置的前缀,和适配位置的后缀是一致才可以跳到j位置

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串匹配中KMP算法的next数组构造与思考 的相关文章

随机推荐

  • 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer一张表中导入数据

    向数据库的一张表中添加数据 xff0c 可以采用单个添加 xff0c 即一条数据 一条数据的添加 xff1b 也可以采用批量导入 xff0c 依次将好些条数据写入数据库的一张表中 文本借助实例 添加系列信息 讲解一种向数据库批量导入数据的方
  • 《项目经验》--简单三层使用DataTable向数据库表批量导入数据---向SqlServer多张张表中导入数据

    前面已经介绍过如何向数据库的一张表中批量导入数据 xff0c 详情见博客 项目经验 简单三层使用DataTable向数据库表批量导入数据 向SqlServer一张表中导入数据 xff1b 本文主要介绍如何向SqlServer的多张表中批量导
  • 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

    先看一下我要实现的功能界面 xff1a 这篇文章主要介绍 xff1a 后台一般处理程序把从数据库查找的数据 xff0c 转换成JSON xff0c 然后传递到前台JS文件中 xff0c JS解析JSON数据 xff0c 并将数据显示在界面
  • 英语快照1---英语正能量

    突发奇想 xff0c 想记录一下近来自己的英语感觉 xff0c 最近特别想学英语 xff0c 感觉学英语是一种享受 xff0c 说不出来的感觉 这两天发生了一些事 xff0c 描述一下 xff0c 也算是对现在英语感觉的一种快照吧 xff0
  • 由自身经历谈“不谋全局者,不足以谋一域”

    古人云 xff1a 不谋全局者 xff0c 不足以谋一域 xff1b 不谋万世者 xff0c 不足以谋一时 就是说领导者要胸有全局 xff0c 抓好大事 xff0c 善于解决全局性 战略性 方向性问题 xff0c 决不能眉毛胡子一把抓 xf
  • 软考之下午题做题技巧

    距离5月25日的软考还有2天时间 xff0c 考试前的状态尤为重要 上午题虽然很零散 xff0c 但是很简单 xff0c 下午题虽然就5道 xff0c 但是做题时需要认真 认真再认真 xff0c 答案题中找 xff0c 好好读题 xff0c
  • 看过J2EE视频,你是否也有雨过地皮湿的感觉

    软考过后开始了J2EE的学习 xff0c 初认识J2EE视频感觉不是很好 xff0c 有种雨过地皮湿的感觉 xff0c 还需要通过后续的学习来加强巩固 至今已接触的JAVA方向的J2SE 和J2EE xff0c 下面简单对JAVA方面的技术
  • 视频分析算法的原理简介

    视频分析算法的原理简介 视频分析技术来源于计算机视觉 xff0c 它能够在图象及图象描述之间建立映射关系 xff0c 从而使计算机能够通过图象处理和分析来理解画面中的内容 xff0c 其实质是 自动分析和抽取视频源中的关键信息 智能视频监控
  • x86实模式保护模式

    windows intel 8086 版权所有 xff1a x86 汇编语言 从实模式到保护模式 李忠 王晓波 余洁 加载器 用户程序 两者需要遵从一致的协议 用户程序内部的某个固定位置 xff0c 包含有对该程序的描述信息 加载器在该固定
  • ORB-SLAM2 | Prometheus_px4 | OpenCV 3.4.9

    Reference to ORB SLAM2 GTK 43 2 x symbols detected Using GTK 43 2 x and 3 in the same process is not supported https zhu
  • 看了我的 RPC 实战,同事拍案叫绝

    1 RPC 1 1 什么是 RPC xff1f RPC xff08 Remote Procedure Call Protocol xff09 远程过程调用协议 xff0c 目标就是让远程服务调用更加简单 透明 RPC 框架负责屏蔽底层的传输
  • 无人机姿态表示方法及相互转换(欧拉角、方向余弦矩阵、四元数)

    常用的姿态表示方法有欧拉角 方向余弦矩阵 四元数这几种 欧拉角表示方法采用来表示飞行器的姿态 xff0c 其中为滚转角 xff0c 为俯仰角和为航向角 xff0c 表示飞行器首先航向偏转角度 xff0c 再俯仰角度 xff0c 然后机体滚转
  • 无人飞行器数学模型

    这里是运动学和动力学模型 xff0c 也适用于任何其它类型的飞行器 xff0c 乃至无人车等各种载体 飞行器的状态包括位置 xff0c 速度 xff0c 姿态角度 xff0c 角速度 xff0c 姿态也可以用坐标转换矩阵来表示 xff0c
  • 无人飞行器的控制

    飞行器的控制通过几个环来实现 xff0c 外环控制为位置的控制 xff0c 内环控制为姿态的控制 xff0c 通过姿态的控制来实现飞行器的动态控制 xff0c 从而控制飞行器的速度和位置 xff0c 大致框架如下 位置控制根据目标位置得出飞
  • ROS目录结构

    参考 xff1a https zhuanlan zhihu com p 139405796 ROS项目通常组织在一个catkin的workspace下面 xff0c 里面包含典型的文件和目录 xff0c 如下 如上图所示 xff0c 首先是
  • 二、编译PX4飞控的Bootloader

    二 编译PX4飞控的Bootloader 环境 xff1a Ubuntu 14 04 LTS 声明 xff1a 本人用的是window安装VMware虚拟机 xff0c 然后安装ubuntu 步骤 xff1a 1 先安装GCC环境变量 这里
  • Jetson nano 使用笔记(二):系统备份与恢复

    本文参考了网友 企鹅的外层世界 的文章https blog csdn net lianbus article details 104733412 xff0c 在其基础上添加了部分说明 配置好系统和TensorFlow等运行环境后 xff0c
  • 嵌入式软件工程师(6-15k)笔试面试经验分享(应届毕业生)

    先看一下工资情况 xff1a 一 笔试部分 xff08 一 xff09 技术测试题 xff08 拍了部分内容 xff09 xff08 二 xff09 人格测试题 二 面试部分 xff08 一 xff09 技术面试题 面试百问 xff1a 问
  • 2021-02-13

    昨天学习了关于位运算的一些常识 xff0c 自己也跟着视频敲了一些位运算代码如下 xff1a package com raisecom tiap ems basic mgt domain acl import java util Array
  • 字符串匹配中KMP算法的next数组构造与思考

    对于KMP算法的next算法 xff0c 匹配规则i不动 xff0c j而是根据 next j 61 k 如果在j位置失配 xff0c 则退到k位置 构造next数组的 是根据前缀与后缀的最长匹配 如ababaa 的next数组是 1001