BF模式匹配算法改良
2017-04-03 14:08
816 查看
/*
*子串查找(BF)
*BF算法是带回溯的模式匹配算法,如果缓冲标记已做的匹配,减少回溯,可以提高时间效率,当然会牺牲空间,实际运用中需要做权衡考虑
*主串MS,长度为N
*子串ms,长度为n,n<=N
*初始认为MS的[0,N-n]与子串是匹配位置,将其加入一个记录数组中,匹配个数为N-n+1
*将这些位置的字符与与子串第一个字符比较,匹配的位置前移存储,并记录匹配个数
*继续子串的其他字符进行比较,记录匹配的位置及匹配个数
*返回匹配个数
*/
#include <string.h>
#include <iostream>
int getSubPos(int *rec,char *MS,int N,char *ms,int n)
{
if(rec==NULL||MS==NULL||ms==NULL||n>N){
return 0;
}
int size=N-n+1;
for(int i=0;i<size;i++){
rec[i]=i;
}
for(int i=0; i<n;i++){
int psize=0;
for(int j=0;j<size;j++){
if(ms[i]==MS[rec[j]+i]){
rec[psize++]=rec[j];
}
}
size = psize;
}
return size;
};
int main(int argc,char **argv)
{
char MS[32]="aaaaaabab";
char ms[12]="aab";
//char MS[32]="abdabcabbabcabceabcabc";
//char ms[12]="abcabc";
int rec[32]={0};
int size = getSubPos(rec,MS,strlen(MS),ms,strlen(ms));
for(int i=0; i<size; i++){
printf("find sub[%d]\n",rec[i]);
}
return 0;
};
*子串查找(BF)
*BF算法是带回溯的模式匹配算法,如果缓冲标记已做的匹配,减少回溯,可以提高时间效率,当然会牺牲空间,实际运用中需要做权衡考虑
*主串MS,长度为N
*子串ms,长度为n,n<=N
*初始认为MS的[0,N-n]与子串是匹配位置,将其加入一个记录数组中,匹配个数为N-n+1
*将这些位置的字符与与子串第一个字符比较,匹配的位置前移存储,并记录匹配个数
*继续子串的其他字符进行比较,记录匹配的位置及匹配个数
*返回匹配个数
*/
#include <string.h>
#include <iostream>
int getSubPos(int *rec,char *MS,int N,char *ms,int n)
{
if(rec==NULL||MS==NULL||ms==NULL||n>N){
return 0;
}
int size=N-n+1;
for(int i=0;i<size;i++){
rec[i]=i;
}
for(int i=0; i<n;i++){
int psize=0;
for(int j=0;j<size;j++){
if(ms[i]==MS[rec[j]+i]){
rec[psize++]=rec[j];
}
}
size = psize;
}
return size;
};
int main(int argc,char **argv)
{
char MS[32]="aaaaaabab";
char ms[12]="aab";
//char MS[32]="abdabcabbabcabceabcabc";
//char ms[12]="abcabc";
int rec[32]={0};
int size = getSubPos(rec,MS,strlen(MS),ms,strlen(ms));
for(int i=0; i<size; i++){
printf("find sub[%d]\n",rec[i]);
}
return 0;
};
相关文章推荐
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 字符串之简单模式匹配算法(BF)
- 数据结构编程笔记十一:第四章 串 定长顺序串以及模式匹配算法(BF和KMP)的实现
- 串的操作(一) BruteForce (BF)算法 朴素的模式匹配
- 模式匹配之BF(Brute Force)暴力算法
- 串的模式匹配算法(BF、KMP)
- 串的模式匹配算法:BF和KMP算法
- 模式匹配算法BF和KMP
- 数据结构(java语言描述)模式匹配——Brute-Force(BF)算法
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 改良的KMP字符串模式匹配算法
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 模式匹配算法(BF)
- 串的模式匹配算法:BF和 KMP算法
- 数据结构第四次上机 第四章之BF和KMP算法(顺序串的各种模式匹配算法)
- 数据结构- 串的模式匹配算法:BF和 KMP算法
- 数据结构(11)--串的模式匹配算法之BF、KMP算法
- 字符串模式匹配算法1 - BF和KMP算法
- 串的模式匹配算法之KMP与BF
- 数据结构- 串的模式匹配算法:BF和 KMP算法