帶萬用字元的字串匹配

2021-10-03 02:53:25 字數 918 閱讀 4624

05 帶萬用字元的字串匹配

描述萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替乙個或多個真正字元。萬用字元有問號(?)和星號( * )等,其中,「?」可以代替乙個字元,而「*」可以代替零個或多個字元。

你的任務是,給出乙個帶有萬用字元的字串和乙個不帶萬用字元的字串,判斷他們是否能夠匹配。

例如,1?456 可以匹配 12456、13456、1a456,但是卻不能夠匹配23456、1aa456;

2 * 77?8可以匹配 24457798、237708、27798。

關於輸入

輸入有兩行,每行為乙個不超過20個字元的字串,第一行帶萬用字元,第二行不帶萬用字元

關於輸出

如果兩者可以匹配,就輸出「matched」,否則輸出「not matched」

例子輸入

1*456?

11111114567

例子輸出
matched
分析

​ 這是典型的分解問題為子問題的題目,如果是?或者兩串對應的字元相等,問題就等價於判斷下一位開始的字串是否匹配。如果當前字元是* ,則問題轉化為看從此開始的某個長度的字串是否匹配,餘下的是否匹配,需要迴圈遍歷。

**實現

#include

#include

using

namespace std;

string s1, s2;

intmain()

bool

match

(int s1_loc,

int s2_loc)

else

return

false

;}

這段**雖然ac了但是還是感覺有點bug,設計的時候感覺邏輯也不是很清晰,待完善

OpenJudge 帶萬用字元的字串匹配

萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替乙個或多個真正字元。萬用字元有問號 和星號 等,其中,可以代替乙個字元,而 可以代替零個或多個字元。你的任務是,給出乙個帶有萬用字元的字串和乙個不帶萬用字元的字串,判斷他們是否能夠匹配。例如,1?456 可以匹配...

帶萬用字元的字串匹配 動態規劃

描述 萬用字元是一類鍵盤字元,當我們不知道真正字元或者不想鍵入完整名字時,常常使用萬用字元代替乙個或多個真正字元。萬用字元有問號 和星號 等,其中,可以代替乙個字元,而 可以代替零個或多個字元。你的任務是,給出乙個帶有萬用字元的字串和乙個不帶萬用字元的字串,判斷他們是否能夠匹配。例如,1?456 可...

萬用字元匹配字串

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