简单字符串匹配 Brute

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

     /*

    很简单

    模式匹配的Brute-Force算法

    Brute-Force算法实现模式匹配的思想是:从主串s=”s0s1…sn-1”的第一个字符开始和模式串t=”t0t1…tn-1”的第一个字符比较,若相等,则继续比较后续字符;否则从主串s的第二个字符开始重新与模式串t的第一个字符比较。如此不断继续,若存在模式串中的每个字符依次和主串中的一个连续字符序列相等,则匹配成功,返回模式串t的第一个字符在主串中的下标;否则匹配失败,返回-1。

    */ 

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    #include<string.h>

    /*strlen原型:size_t strlen(
    const char *str
    );
    */

    int len(char *t)
    {
    int i=0,j=0;
    char *m;
    for(m=t;t[i]!='\0';i++)
    {
    j++;
    }
    return j;
    }
    int brute(char * t,char * p)
    {
    int i=0,j=0;
    int pos;
    int lent=len(t);
    int lenp=len(p);
    //t[0]=lent;//类型不一致可能用到强制转换;
    //p[0]=lenp;
    while(t[i]!='\0'&&p[j]!='\0')
    {
    if(t[i]==p[j])
    {
    i++;
    j++;
    }
    else
    {
    i=i-j+1;
    j=0;
    }

    }

    if(p[j]=='\0')
    {
    printf("成功!\n");
    return i-lenp;
    }
    else
    {
    printf("匹配失败");
    return -1;
    }
    }
    int main()
    {
    int i=1,j=1;
    int lent,lenp,pos;
    char *text="abcababeca";
    char *patten="ababe";
    /*要理解 你要知道 字符串 干什么了 双引号 做了3件事
    1.申请了空间,存放了字符串
    2. 在字符串尾加上了'/0'
    3.返回地址
    */
    // j=len(text);
    // printf("字符串指针数组长度为:%d",j);

    printf("%s\n " ,text);

    printf("%s\n " ,patten);
    pos=brute(text,patten);
    printf("成功匹配的位置是:%d",pos);

    return 0;
    }

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    “简单字符串匹配 Brute” 的相关文章

    使用PHP实现的功能有哪些 - 编程语言

    本篇内容介绍了“使用PHP实现的功能有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、用户认证和授权一个网站需要安全地管理用户信息。...

    PHP如何实现判断两次密码输入是否一致 - 编程语言

    这篇文章主要介绍了PHP如何实现判断两次密码输入是否一致的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP如何实现判断两次密码输入是否一致文章都会有所收获,下面我们一起来看看吧。 (一)表单设计首先,我们需要...

    centos 5.11 6 7 版本安装记

       因工作需要安装centos ,一般是用移动光驱安装。因某些原因,得用u盘安装,用U盘一般操作是用utrlsto或一些U盘制作成启动盘。   别的untun 或rhel版本或是可能安装成,但是centos因各种原因总是安装不成功。   最后不得不用光驱来安装。...

    C++随机数

    由于qrand()得到的是固定的伪随机数,而time得到的如果在时间小于一秒则相差不大,要想每次运行程序生成的不一样,我的做法是把这两种相加,这样下次运行得到的多个随机数就和上次不一样了. //random rect QRectF randRect; l...

    Python匹配方法怎么用 - 编程语言

    本篇内容介绍了“Python匹配方法怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! Pampy 的花式秀匹配单个字符我们可以用 _ 来...

    怎么利用Python开发App - 编程语言

    本篇内容介绍了“怎么利用Python开发App”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 准备工作利用Python开发app需要用到Py...