博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串朴素匹配 BF法
阅读量:5270 次
发布时间:2019-06-14

本文共 3213 字,大约阅读时间需要 10 分钟。

这是我原来51cto上博客移植过来的。凑合看吧。不过真的忘了。
View Code
#include 
#include
int main() { int i,k,l1,l2,ii,j,leap; char s1[1001],s2[1001]; while(gets(s1)!=NULL) { gets(s2); l1=strlen(s1); l2 = strlen(s2); leap =0; for(i= 0;i <= l1-l2;i++) //i是可以到l1-l2的它在l1-l2上在做一次比较 { ii = 0;j = 0; while(ii < l1&&j < l2) { if(s1[ii] == s2[j]) { ii++;j++; } else { ii = ii-j+1;j = 0; //ii从开始有相等的地方再次向后移动 } if(j == l2) //而不是l2-1 { leap = 1;break; } else leap=0; } if(leap) break; } if(leap == 0) { printf("NO\n"); } else { printf("YES\n"); } } } //算法功能:串的朴素模式匹配是最简单的一种模式匹配算法,又称为 Brute Force 算法,简称为BF算法 #include
#include
#define MAXL 255 #define FALSE 0 #define TRUE 1 typedef int Status; typedef unsigned char SString[MAXL+1]; //生成一个其值等于串常量strs的串T void StrAssign(SString &T, char *strs) { int i; T[0] = 0; //0号单元存储字串长度 for(i = 0; strs[i]; i++) //用数组strs给串T赋值 T[i+1] = strs[i]; T[0] = i; } //返回子串T在主串S中第pos个字符开始匹配的位置,若不存在,则返回0 int Index(SString S, SString T, int pos) { int i = pos, 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; } int main() { SString S, T; int m; char strs1[MAXL]; //建立主串S char strs2[MAXL]; //建立模式串T printf("请输入主串和子串:\n"); printf("主串S: "); scanf("%s", strs1); printf("子串T: "); scanf("%s", strs2); StrAssign(S, strs1); StrAssign(T, strs2); m = Index(S, T, 1); if(m) printf("主串 S = {%s}\n子串 T = {%s}\n在第 %d 个位置开始匹配!\n", strs1, strs2, m); else printf("主串 S = {%s}\n子串 T = {%s}\n匹配不成功!\n", strs1, strs2); return 0; }

转载于:https://www.cnblogs.com/0803yijia/archive/2012/05/22/2513758.html

你可能感兴趣的文章
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
mysql 主从库同步
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>
ABP入门系列(6)——定义导航菜单
查看>>
排序sort (一)
查看>>
Intent应用
查看>>
暑假周报告总结第二周
查看>>
Parrot虚拟机
查看>>
4.6上午
查看>>
linux之sort用法
查看>>
Teamcenter10 step-by-step installation in Linux env-Oracle Server Patch
查看>>
Redis-jedis模拟多线程购票
查看>>