模式匹配-BF算法
2024-08-26 09:41:37
/***字符串匹配算法***/
#include<cstring>
#include<iostream>
using namespace std; #define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255 //用户可在255以内定义最长串长
typedef char SString[MAXSTRLEN+1]; //0号单元存放串的长度 Status StrAssign(SString T, char *chars) { //生成一个其值等于chars的串T
int i;
if (strlen(chars) > MAXSTRLEN)
return ERROR;
else {
T[0] = strlen(chars);
for (i = 1; i <= T[0]; i++)
T[i] = *(chars + i - 1);
return OK;
}
} //填写4.1 BF算法
int Index(SString S, SString T, int pos)
{
//返回模式T在主串S中第pos个字符之后第s一次出现的位置。 若不存在。则返回值为0
//当中,T非空。1≤pos≤StrLength(S)
int i=pos;
int j=1;
while(i<=S[0]&&j<=T[0])
{
if(S[i]==T[j])
{
i++;
j++;
}
else
{
i=i-j+2;
j=1;
}
}
if(j>T[0]) return i-T[0];
else return 0;
}//Index int main()
{
SString S;
StrAssign(S,"bbaaabbaba");
SString T;
StrAssign(T,"abb") ;
cout<<"主串和子串在第"<<Index(S,T,1)<<"个字符处首次匹配\n";
return 0;
}
最新文章
- JsonResult作为Action返回值时的错误
- Buffer Cache
- vim--macro
- subversion
- MySQL服务器安装配置-非安装版、windows版
- Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)
- Android 播放在线视频
- Android View -- setTranslationX
- Liferay 6.2 改造系列之二:清理不需要的Portlet
- 【C#学习笔记】网页弹出提示框
- 敏捷开发系列之旅 第二站(走近XP极限编程)
- shell脚本分类
- 从Ubuntu12.04升级到Ubuntu 14.04之后,系统将无法启动
- 《玩转Bootstrap(JS插件篇)》笔记
- Java温故而知新-插入排序
- Echarts数据可视化series-heatmap热力图,开发全解+完美注释
- jinja2.exceptions.TemplateNotFound: home/index.html
- 关于codeforces国内访问卡顿慢的最新解决办法,谷歌字体库/屏蔽facebook链接
- ActiveMQ嵌入Tomcat
- RabbitMQ:Docker环境下搭建rabbitmq集群
热门文章
- BPI-M1P(全志A20)刷Android启动卡之后启动的过程
- MySQL——基本安装与使用
- TI 77GHZ雷达开发套件 RDP-DC100
- jboss解决ip访问受限问题
- 梦想CAD控件 2019.01.20更新
- 使用lombok注解@Getter @Setter方法代码编译成功,但是没有生成get,set方法
- java中的数学函数Math方法记录
- 【2018百度之星初赛(A)】1002 度度熊学队列
- uWSGI+nginx+django+virtualenv+supervisor部署项目
- python json、 pickle 、shelve 模块