zoukankan      html  css  js  c++  java
  • 大话数据结构读后感(二)串

    5.2 串的定义

    5.3 串的比较 strcmp();

    5.6 朴素的模式匹配算法      //KMP模式匹配算法

      int  Index(String S , Sring T , int pos)

      {

        int  i=pos;

        int j=0;

        //int next[255];

        //get_next(T,next);//KMP算法得到next数组;

        while(i<S.size()&&j<=T.size())

        {

          if(S[i]==T[j])        //   ||   j==0;

          {

            ++i;

                ++j;

          }

          else

          {

            i=i-j+1; //i退回到上次匹配的首位的下一位;

            j=0;    //子串退回到T的首位;

            //j=next[j];  //j退回合适的位置,i不变;   KMP算法;

          }

        }

        if(j>T.size())

        {

          return i-T.size();

        }

        else

          return 0;

      } 

    next数组的推演;

      void  get_next(Sting T,int *next)

      {

        int i,j;

        i=1;

        j=0;

        next[1]=0;

        while(i<T.size())

        {

          if(j==0 || T[i]==T[j])

          {

            ++i;

            ++j;

            next[i]=j;

          }

          else

            j=next[j];            // j回溯;

        }

      }

    KMP算法的改进:

    void  get_nextval (Sting T,int *next)

      {

        int i,j;

        i=1;

        j=0;

        nextval[1]=0;

        while(i<T.size())

        {

          if(j==0 || T[i]==T[j])

          {

            ++i;

            ++j;

            //next[i]=j;

            if(T[i]!=T[j]) //若当前字符与前缀字符不同,则当前的j为nextval在i位置的值;

            {

              nextval[i]=j;

            }  

            else  

              nextval[i]=nextval[j];//如果与前缀字符相同则将前缀字符的nextval值赋值给nextval在i位置的值;

          }

          else

            j=nextval[j];            // j回溯;

        }

      }

  • 相关阅读:
    atitit查询表修改表字段没反应--解锁锁定的表
    atitit.自适应设计悬浮图片的大小and 位置
    .net 科学类型相关问题
    js eval()执行传参函数的写法
    oracle里如何将两个日期的时间差返回**时**分的格式
    .NET开源项目介绍及资源推荐:数据持久层
    highCharts 电流表、电压表
    win7 telnet命令无法使用
    ascx aspx ashx asmx 文件的作用
    Oracle 新建序列值
  • 原文地址:https://www.cnblogs.com/xcb-1024day/p/11349519.html
Copyright © 2011-2022 走看看