日前某君給我出了這樣一道題目:兩個字串,乙個是普通字串,另乙個含有*和?萬用字元,*代表零個到多個任意字元,?代表乙個任意字元,萬用字元可能多次出現。寫乙個演算法,比較兩個字串是否相等。 我花了四個小時寫出兩種演算法來解決這個問題,簡單地測試了一下,好使!
//方法一,從無萬用字元到有?再到有*,逐步推進分析0char 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];
}
萬用字元的字串匹配演算法
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 ...