加载中......
看往APP
首页
看往同城
栏目导航
圈子导航
下载APP
发帖规范
搜索
搜索
本版
帖子
用户
注册登录
快速发布
同城招聘
生活服务
商务服务
创建圈子
圈子列表
输入验证码,即可复制
微信扫码下载好向圈APP, 登陆后即可进入消息页面查看验证码
只需要3秒时间
全部圈子
使用道具
语过添情ARC
2021-02-23 12:25
C和C++文本搜索中的精确匹配算法上
在文本内容中,都是以字符串的方式来表示,此时要精确搜索文本中是否存在目标文本,也即是搜索在大字符串中搜索目标字符串。这种精确匹配在计算机系统中有着较为广泛的应用,如文本编辑,拼写检查,情报搜索,互联网搜索等。
较为常见的字符串精确匹配算法有以下几种:
1,BF算法
BF即英文Brute Force 算法是算法模式匹配中最简单,最直观的算法。该算法的基本思想是从主字符串T(t0,t1,t2,t3,….tn-1)中的第m个字符起和目标第1个字符比较,如果相等,则继续逐个比较后续字符;比较过程中一旦发现不相等,则回溯到源字符串的m+1个字符,重新匹配,依次类推,知道目标字符串每个字符和源字符串的一个连续的字符序列相等,就匹配成功,否则匹配失败。
2,MP算法
MP算法是对BF算法的极大改进,利用了已经得到的并且存贮的比较结果,在后续比较过程中直接调用这些比较结果,大大的提高了算法的效率。在MP算法中,,最为关键的是寻找匹配失效函数,而一旦目标字符串给定,不管源字符串的取值如何,失效函数均为同一个,也即是失效函数与源字符串无关。
下面给出目标字符串的失效函数C语言代码实现方法:
voidpreMP(const char *dest, intm,intmpnext[])
{
inti, j;
i=0;
j=mpnext[0]=-1;
while(i<m)
{
while(j>-1 && x
!=x[j])
j=mpnext[j];
mpnext[++i]=++j;
}
}
其中函数的参数说明如下:
dest:目标字符串
m:目标字符串的长度
mpnext:用来存贮失效发生时下一轮比较的目标字符串的起始比较位置。
#
C和A的算法
#
算法C语言实现
#
倒C角的算法
大数据
13861 查看
0
0
反对
0
说说我的看法
高级模式
您需要登录后才可以回帖
登录
|
立即注册
发表回复
全部评论
正序
倒序
还没人评论此主题哦
相关阅读
用 C 和 Java 写算法,差别大吗?(文末有福利)
3988 浏览
0
1
大数据
帖子 16547
加入
2