字符串朴素模式匹配算法

一、朴素模式匹配算法(简单模式匹配算法)思想:

将主串中与模式串长度相同的子串搞出来,挨个与模式串对比
当子串与模式串某个对应字符不匹配时,就立即放弃当前子串,转而检索下一个子串
若模式串长度为m,主串长度为n,则直到匹配成功/匹配失败最多需要(n-m+1)*m次比较
最坏时间复杂度: O(nm)
最坏情况:每个子串的前m-1个字符都和模式串匹配,只有第m个字符不匹配
比较好的情况:每个子串的第1个字符就与模式串不匹配

二、代码实现

方案一:

//方案①
int Index(String S,String T){int i,j;int k=1;while(i<=S.length&&j<=T.length){if(S.ch[i]==T.ch[j]){i++;j++}else{i=k;j=1;k++;}}if(j>T.length){return k;}else return 0;
}

方案二:

//方案②
int Index(String S,String T){int i,j;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;}else return 0;
}

字符串朴素模式匹配算法(简单模式匹配算法)相关推荐

  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. 朴素模式匹配算法(C语言)

    一.什么是字符串的模式匹配? 字符串模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置. 注意: ①.子串--主串的一部分,一定存在. ②.模式串--不一定能在主串中找到 二.朴素模式匹配算法 ...

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

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

  6. 数据结构(C语言版)严蔚敏(字符串的模式匹配算法--KMP算法)

    数据结构(C语言版)严蔚敏(字符串的模式匹配算法–KMP算法) 1.暴力匹配算法 // 暴力匹配算法 int Index2(SString S,SString T) {// S是主串,T是子串int ...

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

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

  8. 简单模式匹配算法——串的模式匹配

    一.对一个串中的某子串的定位操作称为 串的模式匹配: 二.模式串:待定位的子串 三.基本思想:从主串中的第一个位置起和模式串的第一个字符开始比较 如果相等,则继续比较后续字符: 如果不等,则从主串的第 ...

  9. 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)...

    什么是TTMP算法?不好意思,我发布这篇文章之前,估摸是没有其他地方能找着该算法的,因为那是俺生造的.  TTMP是啥意思呢?是Terminator Triggered Multi-Pattern 的 ...

最新文章

  1. 微信小程序入门二: 条件、遍历、网络请求、获取本地图片
  2. 机器学习之聚类算法的原理推导及相关知识总结
  3. 零窗口探测怎么抓包_万事俱备,只待“窗口”!航天任务中的重要环节:“发射窗口”!...
  4. 试用期这样做更快通过
  5. matlab中怎么查看变量,Matlab 查看内存中的变量,清空屏幕等命令
  6. 【hibernate criteria】hibernate中criteria的完整用法 转
  7. Linux系统启动流程图
  8. python 自动赚钱软件排行榜_微任务兼职平台app下载
  9. 电脑复制手机粘贴,这些Mac的隐藏玩法你知道吗?
  10. [LOJ6437][计算几何]PKUSC2018:PKUSC
  11. [电脑组装]记录第一次组装电脑+win10激活
  12. 什么东西可以替代触屏笔?Ipad触屏笔推荐品牌
  13. 命运更喜欢将丰硕约果实馈赠给那些含着泪微笑的灵魂
  14. 第1章第2节:PowerPoint的选项卡 [PowerPoint精美幻灯片实战教程]
  15. iOS description方法的使用介绍
  16. 多线程(五、原子类-AtomicReference)
  17. STM32_光敏、温湿度传感的选择?
  18. HTML5期末大作业:关于家乡景点介绍主题——上海介绍(5页) HTML+CSS+JavaScript 大二实训HTML作业...
  19. 蚂蚁金服估值1500亿只是起点 阿里经济体一骑绝尘 腾讯望尘莫及
  20. linux上如何删除文件名乱码的文件

热门文章

  1. [PM]产品经理的主要职责有哪些?
  2. java 获取当前月日_Java获取当前时间年月日的方法
  3. 视频文件转码工具ffmpeg使用
  4. Edge中启用IE兼容模式打开网址
  5. ChatGPT深度研究:细探商业模式与供给端决定因素
  6. 微信恢复工具 MMRecovery 犹如一朵青莲
  7. 行车记录仪主要的芯片方案
  8. Android支付接入(四):联通支付
  9. python log10() 函数
  10. FinalShell 连接出现 chanel is not opened解决方案记录