字符串朴素模式匹配算法(简单模式匹配算法)
字符串朴素模式匹配算法
一、朴素模式匹配算法(简单模式匹配算法)思想:
将主串中与模式串长度相同的子串搞出来,挨个与模式串对比
当子串与模式串某个对应字符不匹配时,就立即放弃当前子串,转而检索下一个子串
若模式串长度为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;
}
字符串朴素模式匹配算法(简单模式匹配算法)相关推荐
- 字符串的模式匹配 (朴素模式匹配算法 ,KMP算法)
字符串的模式匹配 寻找字符串p在字符串t中首次出现的起始位置 字符串的顺序存储 typedef struct {char str[MAXSIZE];int length; }seqstring; 朴素 ...
- 图解字符串的朴素模式匹配算法
复习串的朴素模式匹配算法 模式匹配 : 子串定位运算,在主串中找出子串出现的位置. 在串匹配中,将主串 S 称为目标(串),子串 T 称为模式(串).如果在主串 S 中能够找到子串 T, 则称匹配成功 ...
- 4.2.1朴素模式匹配算法
什么是字符串的模式匹配: 从这段字符串里面搜索内容,被搜索的字符串我们称之为主串. 也可能匹配不到 主串长度为n,模式串长度为m. 朴素模式匹配算法:将主串中所有长度为m的字串依次与模式串对比,直到找 ...
- 朴素模式匹配算法(C语言)
一.什么是字符串的模式匹配? 字符串模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置. 注意: ①.子串--主串的一部分,一定存在. ②.模式串--不一定能在主串中找到 二.朴素模式匹配算法 ...
- 4. 串的【朴素模式匹配算法】、【KPM算法:求next数组、nextval数组】
串的模式匹配:在主串中,找到与模式串相同的子串,并返回其所在位置. 其实就是给出一个串abc,找到abc在主串的位置[abc都要匹配] 模式串:给出一个串abc 子串:主串中的abc[可能没有] 文章 ...
- 数据结构(C语言版)严蔚敏(字符串的模式匹配算法--KMP算法)
数据结构(C语言版)严蔚敏(字符串的模式匹配算法–KMP算法) 1.暴力匹配算法 // 暴力匹配算法 int Index2(SString S,SString T) {// S是主串,T是子串int ...
- java中KMP模式_朴素模式匹配算法、kmp模式匹配算法、kmp模式匹配算法改进。java代码...
** 朴素模式匹配算法.kmp模式匹配算法.kmp模式匹配算法改进.java代码** 思路过段时间整理~ 可以先看看阮一峰的这篇博客,字符串匹配的KMP算法 package edu.hubu.base ...
- 简单模式匹配算法——串的模式匹配
一.对一个串中的某子串的定位操作称为 串的模式匹配: 二.模式串:待定位的子串 三.基本思想:从主串中的第一个位置起和模式串的第一个字符开始比较 如果相等,则继续比较后续字符: 如果不等,则从主串的第 ...
- 字符串多模式精确匹配(脏字/敏感词汇搜索算法)——TTMP算法 之理论(转)...
什么是TTMP算法?不好意思,我发布这篇文章之前,估摸是没有其他地方能找着该算法的,因为那是俺生造的. TTMP是啥意思呢?是Terminator Triggered Multi-Pattern 的 ...
最新文章
- 微信小程序入门二: 条件、遍历、网络请求、获取本地图片
- 机器学习之聚类算法的原理推导及相关知识总结
- 零窗口探测怎么抓包_万事俱备,只待“窗口”!航天任务中的重要环节:“发射窗口”!...
- 试用期这样做更快通过
- matlab中怎么查看变量,Matlab 查看内存中的变量,清空屏幕等命令
- 【hibernate criteria】hibernate中criteria的完整用法 转
- Linux系统启动流程图
- python 自动赚钱软件排行榜_微任务兼职平台app下载
- 电脑复制手机粘贴,这些Mac的隐藏玩法你知道吗?
- [LOJ6437][计算几何]PKUSC2018:PKUSC
- [电脑组装]记录第一次组装电脑+win10激活
- 什么东西可以替代触屏笔?Ipad触屏笔推荐品牌
- 命运更喜欢将丰硕约果实馈赠给那些含着泪微笑的灵魂
- 第1章第2节:PowerPoint的选项卡 [PowerPoint精美幻灯片实战教程]
- iOS description方法的使用介绍
- 多线程(五、原子类-AtomicReference)
- STM32_光敏、温湿度传感的选择?
- HTML5期末大作业:关于家乡景点介绍主题——上海介绍(5页) HTML+CSS+JavaScript 大二实训HTML作业...
- 蚂蚁金服估值1500亿只是起点 阿里经济体一骑绝尘 腾讯望尘莫及
- linux上如何删除文件名乱码的文件