一、什么是字符串的模式匹配?

  • 字符串模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置。
  • 注意:
    ①、子串——主串的一部分,一定存在。
    ②、模式串——不一定能在主串中找到

二、朴素模式匹配算法

  • 主串长度为n,模式串长度为m。
  • 朴素模式匹配算法:将主串中所有长度为m的子串依次与模式串匹配对比,直到找到一个完全匹配的子串,或所有的子串都不匹配为止。
  • 最多对比n-m+1个子串

(一)通过数组下标实现朴素模式匹配算法

  • 若当前⼦串匹配失败,则主串指针 i 指向下⼀个⼦串的第⼀个位置,模式串指针 j 回到模式串的第⼀个位置
  • j > T.length,则当前⼦串匹配成功,返回当前⼦串第⼀个字符的位置 —— i - T.length
int Index(SString S, SString T){int i=1,j=1;while(i <= S.length && j<=T.length){if(S.ch[i]==T.ch[j]){++i;++j;    //继续比较后继字符}else{i=i-j+2;j=1; //指针后退重新开始匹配}}if(j > T.length)return i-T.length;elsereturn 0;
}

(二)时间复杂度

  • 设主串⻓度为 n,模式串⻓度为 m,则
    ①、最坏时间复杂度 = O(nm)
    ②、最好时间复杂度 = O(n)

1. 最坏时间复杂度O(nm)

  • 最坏的情况,每个⼦串都要对⽐ m 个字符,共 n-m+1 个⼦串,复杂度 = O((n-m+1)m) = O(nm)
  • 注:很多时候,n >> m

2. 最好时间复杂度O(n)

  • 最好的情况,每个⼦串的第⼀个字符就匹配失败,共 n-m+1 个⼦串,复杂度 = O(n-m+1) = O(n)
  • 注:很多时候,n >> m

朴素模式匹配算法(C语言)相关推荐

  1. 字符串的模式匹配 (朴素模式匹配算法 ,KMP算法)

    字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置 字符串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 朴素 ...

  2. 图解字符串的朴素模式匹配算法

    复习串的朴素模式匹配算法 模式匹配 : 子串定位运算,在主串中找出子串出现的位置. 在串匹配中,将主串 S 称为目标(串),子串 T 称为模式(串).如果在主串 S 中能够找到子串 T, 则称匹配成功 ...

  3. 4.2.1朴素模式匹配算法

    什么是字符串的模式匹配: 从这段字符串里面搜索内容,被搜索的字符串我们称之为主串. 也可能匹配不到 主串长度为n,模式串长度为m. 朴素模式匹配算法:将主串中所有长度为m的字串依次与模式串对比,直到找 ...

  4. 4. 串的【朴素模式匹配算法】、【KPM算法:求next数组、nextval数组】

    串的模式匹配:在主串中,找到与模式串相同的子串,并返回其所在位置. 其实就是给出一个串abc,找到abc在主串的位置[abc都要匹配] 模式串:给出一个串abc 子串:主串中的abc[可能没有] 文章 ...

  5. 字符串朴素模式匹配算法(简单模式匹配算法)

    字符串朴素模式匹配算法 一.朴素模式匹配算法(简单模式匹配算法)思想: 将主串中与模式串长度相同的子串搞出来,挨个与模式串对比 当子串与模式串某个对应字符不匹配时,就立即放弃当前子串,转而检索下一个子 ...

  6. java中KMP模式_朴素模式匹配算法、kmp模式匹配算法、kmp模式匹配算法改进。java代码...

    ** 朴素模式匹配算法.kmp模式匹配算法.kmp模式匹配算法改进.java代码** 思路过段时间整理~ 可以先看看阮一峰的这篇博客,字符串匹配的KMP算法 package edu.hubu.base ...

  7. 蛮力法在字符串匹配问题中的应用(JAVA)--朴素模式匹配算法

    蛮力法在字符串匹配问题中的应用 字符串匹配问题通常是给定一个n个字符组成的串(称为文本),一个m(m<=n)个字符的串(称为模式),从文本中寻找匹配模式的子串.显然我们需要逐个匹配,这是蛮力算法 ...

  8. 串--串的定义,顺序、链式存储结构,BF、KMP模式匹配算法(C语言描述)

    此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.串(String)的定义: 串(String):由零个或多个字符组成的 ...

  9. 朴素模式匹配与KMP模式匹配算法

    一.朴素模式匹配 朴素模式匹配算法 就是遍历主串,然后把待匹配字符串与子串进行比对,先把待匹配子串的第一个字母与主串进行匹配,若匹配成功,则两串的坐标依次 ++,匹配不成功时,主串坐标返回到开始匹配时 ...

最新文章

  1. android 实现仿QQ登录可编辑下拉菜单
  2. 构建第一个Spring Boot2.0应用之项目创建(一)
  3. 架构之路(二):性能
  4. JavaScript:数组、函数和对象
  5. 基于SSM的境外电商后台管理系统(含word论文文档)
  6. 【论文阅读笔记】Beamforming Optimization for Wireless Network Aided by IRS with Discrete Phase Shifts
  7. Problem - 1077E - E. Thematic Contests(暴力+二分)
  8. lisp方格网法计算土方量_土地整理中方格网法计算土方量
  9. 【工程师整活】Ai-WB1-A1S实现离线语音+APP+天猫精灵控制风扇
  10. H2教程系列(二) 创建数据库
  11. 物联网卡怎么激活 如何计费
  12. 51单片机模拟数字键盘输入以及图像显示+Proteus仿真
  13. JavaScript实现炸金花
  14. Visual Studio 2022安装到非C盘完全指南
  15. Android FileProvider配置和当引用包内已经含有FileProvider的多节点解决办法
  16. 教培行业遇冷,他从中职老师转行了软件测试
  17. 各厂商接入交换机通过ACL限制端口应用的配置信息
  18. WIN10/WIN7网络优化工具实现
  19. android studio 修改打包包名的正确方式
  20. vue实现两个区域滚动条同步滚动

热门文章

  1. kali破解wifi
  2. 全面兼容各端的动画库PAG,对标Lottie
  3. C++中的sizeof函数
  4. HashCode计算方法
  5. 论程序员成长:如何像游戏一样打怪?
  6. uniapp-微信小程序-图片转base64
  7. 哈密顿回路C/c++
  8. 读书笔记(五)《影响力》罗伯特·西奥迪尼
  9. 360画报的壁纸保存在哪?
  10. 求一个3×3矩阵对角线元素之和