當前位置:首頁 » 編程語言 » c語言匹配

c語言匹配

發布時間: 2024-11-10 17:44:29

① 串模式匹配演算法(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<slen && j<tlen)
{
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<slen)
{
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<slen && j<plen)
{
if(j==-1||s[i]==p[j]) {++i;++j;}
else j=next[j];

② C語言的括弧匹配怎麼寫啊

了解一下數據結構中的棧(其實就是後入先出),你就知道該怎麼實現了。
知道怎麼實現棧後就很簡單了:遇到左括弧則入棧,遇到右括弧則檢查棧內是否有元素,沒有元素則結果不匹配,有元素則彈出棧頂元素來查看是否符號相匹配。而檢查完畢後如果棧內仍有元素,則不匹配,無元素則匹配

熱點內容
datepickerandroid 發布:2024-11-22 19:54:31 瀏覽:655
方舟編譯器與虛擬機 發布:2024-11-22 19:44:15 瀏覽:141
nas存儲應用場景 發布:2024-11-22 19:17:07 瀏覽:976
美年大健康體檢查詢密碼是什麼 發布:2024-11-22 19:14:49 瀏覽:747
wps存儲找不到了 發布:2024-11-22 19:09:21 瀏覽:524
蘋果訪問報告 發布:2024-11-22 19:06:03 瀏覽:658
區域網訪問虛擬主機 發布:2024-11-22 19:01:05 瀏覽:517
安卓怎麼玩英雄聯盟手游最後有個圖片 發布:2024-11-22 18:55:58 瀏覽:749
阿里雲伺服器承載量 發布:2024-11-22 18:52:26 瀏覽:500
android正則匹配 發布:2024-11-22 18:49:29 瀏覽:535