BF模式匹配算法改良

简介: /**子串查找(BF)*BF算法是带回溯的模式匹配算法,如果缓冲标记已做的匹配,减少回溯,可以提高时间效率,当然会牺牲空间,实际运用中需要做权衡考虑*主串MS,长度为N*子串ms,长度为n,nN){       ...
/*

*子串查找(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;
};
目录
相关文章
|
6月前
|
算法 C语言
C语言BF算法
C语言BF算法
38 2
|
1月前
|
前端开发 算法 JavaScript
无界SaaS模式深度解析:算力算法、链接力、数据确权制度
私域电商的无界SaaS模式涉及后端开发、前端开发、数据库设计、API接口、区块链技术、支付和身份验证系统等多个技术领域。本文通过简化框架和示例代码,指导如何将核心功能转化为技术实现,涵盖用户管理、企业店铺管理、数据流量管理等关键环节。
|
6月前
|
机器学习/深度学习 运维 算法
[ICDE2024]多正常模式感知的频域异常检测算法MACE
阿里云计算平台大数据基础工程技术团队主导,与浙江大学合作的论文《Learning Multi-Pattern Normalities in the Frequency Domain for Efficient Time Series Anomaly Detection》被ICDE2024收录,该论文解决了云服务环境中不同服务存在不同正常模式,而传统神经网络一个训练好的模型只能较好捕捉一种或少数几种正常模式的问题,该论文提出的方法可以使用一个统一模型对不同服务进行检测,就达到比为每一个服务定制一个模型的SOTA方法更好的效果。
|
6月前
|
存储 自然语言处理 算法
【算法】----BF算法&KMP算法
【算法】----BF算法&KMP算法
59 0
|
6月前
|
算法 测试技术 C++
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
71 0
|
6月前
|
算法 Java
【数据结构】字符串匹配|BF算法|KMP算法|next数组的优化
【数据结构】字符串匹配|BF算法|KMP算法|next数组的优化
98 0
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】关联模式评估方法及Apriori算法超市购物应用实战(超详细 附源码)
【数据挖掘】关联模式评估方法及Apriori算法超市购物应用实战(超详细 附源码)
160 0
|
6月前
|
数据采集 算法 前端开发
【MATLAB】 稳健的经验模式分解REMD信号分解算法
【MATLAB】 稳健的经验模式分解REMD信号分解算法
171 0
|
6月前
|
存储 算法 安全
【408数据结构与算法】—串和BF算法(二十四)
【408数据结构与算法】—串和BF算法(二十四)
|
11月前
|
算法 测试技术 C#
C++单调向量算法:132模式枚举1简洁版
C++单调向量算法:132模式枚举1简洁版