zoukankan      html  css  js  c++  java
  • 简单字符串匹配 Brute

     /*

    很简单  

    简单的

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

    int main()
    {
    char s[]="abcdefghjkl";
    char t[]="efghl";
    int i,j;
    while(s[i]!=''&&t[j]!='')
    {
    if(s[i]==t[j])
    {
    i++;
    j++;
    }
    else
    {
    i=i-j+1;
    j=0;
    }

    }
    if(t[j]=='')
    {printf("匹配成功");
    return i-j+1;
    }
    else
    {printf("匹配失败");
    return 0;
    }
    }

    模式匹配的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]!='';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]!=''&&p[j]!='')
    {
    if(t[i]==p[j])
    {
    i++;
    j++;
    }
    else
    {
    i=i-j+1;
    j=0;
    }

    }

    if(p[j]=='')
    {
    printf("成功! ");
    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 " ,text);

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

    return 0;
    }

  • 相关阅读:
    纳尼?不用码代码,就可回归主流程,一只海豚就可以做到
    教育产品-组件化视觉设计实践
    从整理看视觉设计(网易云课堂我的学习中心-微专业视觉优化)
    搜索意图识别浅析
    如何配置使用Dnsmasq
    如何实现最佳的跨平台游戏体验?Unity成亮解密实时渲染技术!
    PAT 1024. Palindromic Number
    PAT 1023. Have Fun with Numbers
    PAT 1022. Digital Library
    PAT 1021. Deepest Root
  • 原文地址:https://www.cnblogs.com/mykonons/p/5883636.html
Copyright © 2011-2022 走看看