/***字符串匹配算法***/
#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;
}

最新文章

  1. JsonResult作为Action返回值时的错误
  2. Buffer Cache
  3. vim--macro
  4. subversion
  5. MySQL服务器安装配置-非安装版、windows版
  6. Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)
  7. Android 播放在线视频
  8. Android View -- setTranslationX
  9. Liferay 6.2 改造系列之二:清理不需要的Portlet
  10. 【C#学习笔记】网页弹出提示框
  11. 敏捷开发系列之旅 第二站(走近XP极限编程)
  12. shell脚本分类
  13. 从Ubuntu12.04升级到Ubuntu 14.04之后,系统将无法启动
  14. 《玩转Bootstrap(JS插件篇)》笔记
  15. Java温故而知新-插入排序
  16. Echarts数据可视化series-heatmap热力图,开发全解+完美注释
  17. jinja2.exceptions.TemplateNotFound: home/index.html
  18. 关于codeforces国内访问卡顿慢的最新解决办法,谷歌字体库/屏蔽facebook链接
  19. ActiveMQ嵌入Tomcat
  20. RabbitMQ:Docker环境下搭建rabbitmq集群

热门文章

  1. BPI-M1P(全志A20)刷Android启动卡之后启动的过程
  2. MySQL——基本安装与使用
  3. TI 77GHZ雷达开发套件 RDP-DC100
  4. jboss解决ip访问受限问题
  5. 梦想CAD控件 2019.01.20更新
  6. 使用lombok注解@Getter @Setter方法代码编译成功,但是没有生成get,set方法
  7. java中的数学函数Math方法记录
  8. 【2018百度之星初赛(A)】1002 度度熊学队列
  9. uWSGI+nginx+django+virtualenv+supervisor部署项目
  10. python json、 pickle 、shelve 模块