数据结构之串通配符匹配

来源:互联网 发布:压缩感知 算法 翻译 编辑:程序博客网 时间:2024/06/08 19:39

采用顺序结构存储串,编写一个实现串通配符匹配的算法pattern_Index(),其中的通配符只有“?”,它可以和任一字符匹配成功,例如,pattern_Index(“?re",”there are“)返回的结果是2.

代码如下:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MaxSize=100;typedef struct{    char data[MaxSize];    int length;} SqString;SqString str1,str2;void StrAssign(SqString &s,char cstr[]){    int i;    for(i=0; cstr[i]!='\0'; ++i)        s.data[i]=cstr[i];    s.length=i;}int pattern_index(SqString s1,SqString s2){    int i,j,k;    for (i=0; i<s2.length; i++)    {        j=i;        k=0;        while(j<s2.length&&k<s1.length&&(s1.data[k]=='?'||s2.data[j]==s1.data[k]))        {            j++;            k++;        }        if (k>=s1.length)            return (i);    }    return 0;}int main(){    char c1[100],c2[100];    gets(c1);    gets(c2);    StrAssign(str1,c1);    StrAssign(str2,c2);    cout<<pattern_index(str2,str1)<<endl;}

运行结果:


1 0
原创粉丝点击