KMP算法

  • 2022-08-11
  • 浏览 (432)

KMP算法

字符串匹配问题

字符串匹配问题场景

  • 有一个字符串str1 = “abcdefg” 和 str2 = “def”
  • 现在要判断str1 是否含有str2,如果存在,就返回第一次出现的位置,如果没有,则返回-1

暴力匹配算法

如果用暴力匹配的思路,并假设现在str1 匹配到i位置,字符串str2匹配到j位置,则有:

  • 如果当前字符串匹配成功(即 str1[i] == str2[j]) , 则 i++,j++,继续匹配下一个字符
  • 如果匹配失败(即 str1[i] != str2[j]),令 i = i - ( j - 1),j = 0。相当于每次匹配失败时,i回溯,j被置为0.
  • 用暴力方法解决的话,就会有大量的回溯,每次只移动一位,若匹配不成功,移动到下一位接着判断,浪费了大量的时间。 -

你可能感兴趣的文章

Vue如何使用G2绘制图片

Docker Compose入门学习

DockerDesktop入门简介

Docker图形化工具Portainer介绍与安装

1.Docker

Docker操作系统之Alpine

如何将镜像推送到阿里云容器镜像服务

对象存储MinIO入门介绍

ElasticSearch安装与介绍

Beats入门简介

0  赞