帶有萬用字元的字串匹配演算法 C C

2021-06-21 11:26:35 字數 888 閱讀 8825

日前某君給我出了這樣一道題目:兩個字串,乙個是普通字串,另乙個含有*和?萬用字元,*代表零個到多個任意字元,?代表乙個任意字元,萬用字元可能多次出現。寫乙個演算法,比較兩個字串是否相等。 我花了四個小時寫出兩種演算法來解決這個問題,簡單地測試了一下,好使!

//方法一,從無萬用字元到有?再到有*,逐步推進分析

char strmatch( const char *str1, const char *str2)

else}}

}else if(str2[j-1] == '*')}}

} //如果當前字元得到了匹配則繼續迴圈,否則匹配失敗

for(k = 1; k<=slen2; ++k)

}if(k>slen2)

}return matchmap[slen1][slen2];

} //方法二,分析每個情況。

char strmatch( const char *str1, const char *str2)

upbound = j+1;

bmatched = 1;

if(i == slen1 - 1)

}}else if(str2[j] == '*')

//遇到星號,目標字串到末尾都能得到匹配

for(k = i; k< slen1; ++k)

k = j;

while( '*' == str2[++k])

if(str1[i] == str2[k] || str2[k] == '?')

}}else

bmatched = 1;

}} //居然沒有匹配到

if(!bmatched )

}return matchmap[slen1-1][slen2-1];

}

0

萬用字元的字串匹配演算法

1.簡述 題目描述 str1中可能包含的字元 除了 和 以外的任意字元。str2中可能包含的字元 任意字元。其中,表示匹配任意乙個字元,表示匹配任意字元0或者多次。給出這樣兩個字串,判斷str2是否是str1的子串,如果是輸出第乙個匹配到的子串,如果不是,輸出 不是子串 2.分析 對於 的處理,只要...

萬用字元匹配字串

問題 實現支援?和 兩個萬用字元的字串匹配函式。implement wildcard pattern matching with support for and matches any single character.matches any sequence of characters inclu...

含有萬用字元的字串匹配

字串匹配問題,給定兩個字串,求字串2,在字串1中的最先匹配結果。字串2中可以存在 符號,且該符號可以代表任意字元,即字串2中存在萬用字元。e.g.輸入 abcdefghabef,a f 輸出 abcdef include include using namespace std bool match ...