05 帶萬用字元的字串匹配
描述萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替乙個或多個真正字元。萬用字元有問號(?)和星號( * )等,其中,「?」可以代替乙個字元,而「*」可以代替零個或多個字元。
你的任務是,給出乙個帶有萬用字元的字串和乙個不帶萬用字元的字串,判斷他們是否能夠匹配。
例如,1?456 可以匹配 12456、13456、1a456,但是卻不能夠匹配23456、1aa456;
2 * 77?8可以匹配 24457798、237708、27798。
關於輸入
輸入有兩行,每行為乙個不超過20個字元的字串,第一行帶萬用字元,第二行不帶萬用字元
關於輸出
如果兩者可以匹配,就輸出「matched」,否則輸出「not matched」
例子輸入
例子輸出1*456?
11111114567
matched
分析
這是典型的分解問題為子問題的題目,如果是?
或者兩串對應的字元相等,問題就等價於判斷下一位開始的字串是否匹配。如果當前字元是* ,則問題轉化為看從此開始的某個長度的字串是否匹配,餘下的是否匹配,需要迴圈遍歷。
**實現
這段**雖然ac了但是還是感覺有點bug,設計的時候感覺邏輯也不是很清晰,待完善#include
#include
using
namespace std;
string s1, s2;
intmain()
bool
match
(int s1_loc,
int s2_loc)
else
return
false
;}
OpenJudge 帶萬用字元的字串匹配
萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替乙個或多個真正字元。萬用字元有問號 和星號 等,其中,可以代替乙個字元,而 可以代替零個或多個字元。你的任務是,給出乙個帶有萬用字元的字串和乙個不帶萬用字元的字串,判斷他們是否能夠匹配。例如,1?456 可以匹配...
帶萬用字元的字串匹配 動態規劃
描述 萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替乙個或多個真正字元。萬用字元有問號 和星號 等,其中,可以代替乙個字元,而 可以代替零個或多個字元。你的任務是,給出乙個帶有萬用字元的字串和乙個不帶萬用字元的字串,判斷他們是否能夠匹配。例如,1?456 可...
萬用字元匹配字串
問題 實現支援?和 兩個萬用字元的字串匹配函式。implement wildcard pattern matching with support for and matches any single character.matches any sequence of characters inclu...