c語言匹配-九游会j9娱乐平台
① 串模式匹配演算法(c語言)100分懸賞
第一個樸素演算法:
1.普通的串模式匹配演算法:
int index(char s[],char t[],int pos)
/*查找並返回模式串t在s中從pos開始的位置下標,若t不是s的子串.則返回-1.*/
{
int i,j,slen,tlen;
i=pos;j=0; //i,j分別指示主串和模式串的位置.
slen=strlen(s);tlen=strlen(t); //計算主串和模式串的長度.
while(i
if(s[i]==t[j]) {i ;j ;}
else {i=i-j 1;j=0;}
}
if(j>=tlen) return i-tlen;
return -1;
}
第二個kmp演算法.該演算法支持從主串的任意位置開始搜索.
2.kmp演算法:
//求模式串的next函數.
void get_next(char *p,int next[])
{
int i,j,slen;
slen=strlen(p);i=0;
next[0]=-1;j=-1;
while(i
if(j==-1||p[i]==p[j]) { i; j;next[i]=j;}
else j=next[j];
}
}
//kmp模式匹配演算法
int index_kmp(char *s,char *p,int pos,int next[])
/* 利用模式串p的next函數,求p在主串s中從第pos個字元開始的位置*/
/*若匹配成功.則返回模式串在主串中的位置下標.否則返回-1 */
{
int i,j,slen,plen;
i=pos-1;j=-1;
slen=strlen(s);plen=strlen(p);
while(i
if(j==-1||s[i]==p[j]) { i; j;}
else j=next[j];
② c語言的括弧匹配怎麼寫啊
了解一下數據結構中的棧(其實就是後入先出),你就知道該怎麼實現了。
知道怎麼實現棧後就很簡單了:遇到左括弧則入棧,遇到右括弧則檢查棧內是否有元素,沒有元素則結果不匹配,有元素則彈出棧頂元素來查看是否符號相匹配。而檢查完畢後如果棧內仍有元素,則不匹配,無元素則匹配