zoukankan      html  css  js  c++  java
  • 字符串的简单模式匹配算法

    字符串的模式匹配,就是通常见的IndexOf函数的实现过程。就是查询某个字符串T在另外一个字符串S中出现的位置
    使用定长顺序存储结构的字符串可以简单的描述这个过程

    先假定几个前提,设置几个类型
    #define SIZE 80
    typedef struct Chunk
    {
    char ch[SIZE];
    struct Chunk *next;
    }Chunk;
    typedef struct
    {
    Chunk *head,*tail;//串的头尾指针
    int curLen;//串的当前长度
    }

    //c,c++的字符串中0位置存储的是串的长度

    匹配思想如下:
    分别用指数i和j指示主串S和子串T的当前要比较的字符串的位置。基本思想是:从主串S的第pos个位置起和子串T的第一个字符进行比较,如果相等就继续逐个比较下一个字符;如果不相等从主串的下一个字符开始和子串的第一个字符进行比较。以此类推,直到子串T的每个字符都和主串S的一个连续的字符串相等,则称匹配成功。

    函数代码
    int IndexOf(SString s ,SString T,int pos)
    //返回子串T在主串S第pos个字符后的位置,若不存在返回0
    {
    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 j - T[0];
    else return 0;
    }

    本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

  • 相关阅读:
    小故事
    设计模式
    git分支
    git简单操作
    ab命令压力测试
    libcheck ARM交叉编译
    libxml2 ARM 交叉编译
    I.MX6 安装LTIB
    为ARM编译Glib
    QT 4.8 中文显示问题
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319367.html
Copyright © 2011-2022 走看看