maomaohhmm

问题描述:编写一个实现通配符匹配的函数pattern_index(),其中通配符取"?",它可以和任一字符匹配成功,例如,pattern_index(“there",”?re")返回的结果是2。

时间复杂度:最好情况是p的第一个字符与t的所有字符均不相同,则比较次数为O(n);最坏情况是每次比较p都要到最后一个字符失败,则总的比较次数为m*(n-m+1),当n足够大时,时间代价为O(n*m)。

程序代码:

  int pattern_index(PSeqString t,PSeqString p)

  {

    int ti,pi;

    for(ti = 0;ti <= t->n - p->n);ti++)

    {

      pi = 0;

      while((p->c[pi] == \'?\' || t->c[ti+pi] == p->c[pi]) && pi < p->n)

        pi++;

      if(pi == p->n)

        return ti;

    }

    return -1;

  }

        

        

  

分类:

技术点:

相关文章: