華為oj 字串萬用字元

2021-07-10 06:18:46 字數 1090 閱讀 3674

本題,其實和分蘋果的題有那麼一丟丟的類似,在此提供兩種能通過的解法(主要就是對於『*』的處理)

1.這種解法其實是錯誤的,但是也要說說他的思路,對於 『*』 他直接找 『*』 下乙個字元是否出現在需要匹配的串中,並且找到那個位置,認為此位置到之前就是『*』所匹配的內容。

但是這種解法是錯誤的,在此給出乙個測試用例

j*smi??

jhonssmith

至於為什麼他能通過,oj太爛被!

#include#includeusing namespace std;

int main()

else if (str1[i] == '*')

}else

else

}} if (i == len1 && j == len2)

cout << "true";

else

cout << "false";

return 0;

}

2.這種提供的方法,我認為是標準的解法,先看**,再解釋

#include using namespace std;

bool ismatch(char *s1, char *s2, int p, int q)

if (p<0 || q<0)

if (s1[p] == '*')

if (s1[p] == s2[q] || s1[p] == '?')

return false;

}int main()

ret = ismatch(instr, matchstr, strlen(instr) - 1, strlen(matchstr) - 1);

if (ret)

else

return 0;

}

解釋:對於 『*』 的處理,要麼匹配0次,對應語句ismatch(s1,s2,p-1,q),要麼匹配多次ismatch(s1,s2,p,q-1),對於遞迴截止條件,只有當p和q同時小於0,即都匹配完成時才算匹配成功!

華為OJ 字串萬用字元

字串萬用字元 問題描述 在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋 資料庫 正規表示式等領域。現要求各位實現字串萬用字元的演算法。要求 實現如下2 個萬用字元 匹配 0個或以上的字元 字元由英文本母和數字 0 9組成,不區分大小寫。下同 匹配1 個字元輸入 萬用字元表示式 一組字串。輸出 ...

華為OJ 字串萬用字元

問題描述 在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋 資料庫 正規表示式等領域。現要求各位實現字串萬用字元的演算法。要求 實現如下2個萬用字元 匹配0個或以上的字元 字元由英文本母和數字0 9組成,不區分大小寫。下同 匹配1個字元 輸入 萬用字元表示式 一組字串。輸出 返回匹配的結果,正確...

華為OJ題庫 字串萬用字元

題目 字串萬用字元 描述 問題描述 在計算機中,萬用字元一種特殊語法,廣泛應用於檔案搜尋 資料庫 正規表示式等領域。現要求各位實現字串萬用字元的演算法。要求 實現如下2個萬用字元 匹配0個或以上的字元 字元由英文本母和數字0 9組成,不區分大小寫。下同 匹配1個字元 輸入 萬用字元表示式 一組字串。...