首页 > 编程语言 >KMP算法

KMP算法

时间:2023-03-07 23:56:34浏览次数:34  
标签:匹配 int next 算法 mode KMP

KMP算法是字符串匹配算法,就是从指定字符串里找到匹配串匹配的位置

字符串匹配无非是一个个去匹配单个字符,按照通常的思路,我们只需要从头开始一个个往下比就是,但是这样的效率就太慢了

所以,我们就可以去考虑在匹配过程中,出现不匹配时,我们可以返回到哪里去进行匹配呢,是否可以不一个个匹配,而是直接跳过一些呢

显然是可以的,而KMP就是考虑这一点,其借用next数组存储每一个字符到该位置不匹配时可以返回到前面哪个位置。

这里没有图,所以或许我说的不是很清楚,这里推荐一个博主https://blog.csdn.net/starstar1992/article/details/54913261

// 构建next数组
public static int[] getNext(char[] mode){ int[] next = new int[mode.length]; next[0] = -1; int k = -1; for (int i = 1; i < mode.length - 1; i++){ while (k > -1 && mode[k + 1] != mode[i]){ k = next[k]; } if (mode[k + 1] == mode[i]){ k++; } next[i] = k; } return next; }

 

标签:匹配,int,next,算法,mode,KMP
From: https://www.cnblogs.com/xie213/p/17190273.html

相关文章

  • 【LeetCode回溯算法#02】组合总和III
    组合总和III力扣题目链接(opensnewwindow)找出所有相加之和为n的k个数的组合。组合中只允许含有1-9的正整数,并且每种组合中不存在重复的数字。说明:所有数字......
  • Raft算法分析
      Raft是一种更为简单方便易于理解的分布式算法,主要解决了分布式中的一致性问题。相比传统的Paxos算法,Raft将大量的计算问题分解成为了一些简单的相对独立的子问题,......
  • 代码随想录算法训练营第七天 | 454. 四数相加 II、383. 赎金信、
    454.四数相加IIclassSolution{public:intfourSumCount(vector<int>&nums1,vector<int>&nums2,vector<int>&nums3,vector<int>&nums4){unord......
  • 【LeetCode回溯算法#01】图解组合问题
    组合问题力扣题目链接(opensnewwindow)给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。示例:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1......
  • 缓存算法介绍
    缓存算法(页面置换算法)之LRU算法LRU进阶之LRU-K和2Q缓存淘汰算法(LFU、LRU、ARC、FIFO、2Q)分析LRU(LeastRecentlyUsed)算法思想每次内存溢出时,把最长时间未被访......
  • 一道某度的笔试算法题
    题目:给定一个长度为n,由非零整数成的数组,求连续子数组乘积为负数的个数example:55-33-1178ChatGPT的答案,基本正确,有个地方多+1了n=int(input())arr=list(......
  • 【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现
    【选择排序算法详解】Java/Go/Python/JS/C不同语言实现 说明选择排序(SelectionSort)是一种简单直观的排序算法。跟冒泡、插入排序一样,它将数列分为已排序和待排序两个......
  • 【Android逆向】算法还原2
    这题比较简单1.app-release.apk安装至手机提示需要输入账号和密码2.jadx打开看看publicnativebooleancheck(byte[]bArr,byte[]bArr2);static{......
  • Vue核心虚拟Dom和 diff 算法
    一、介绍虚拟DOM什么是虚拟DOM?之前我的理解:虚拟DOM是一个真实DOM的映射,Vue是拿虚拟DOM描述真实DOM,虚拟DOM体积比真实DOM小,每次操作虚拟DOM都会触发重排,判断虚拟DOM发生......
  • 排序算法
    https://github.com/hustcc/JS-Sorting-Algorithm排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进......