192ワイルドカードマッチング
中文
英語
二つの裁判官は、ワイルドカード「?」や「*」文字列の一致が含まれていてもよいです。次のようにマッチングのルールは以下のとおりです。
- 「?」は任意の1文字に一致します。
- 「*」(空の文字列を含む)任意の文字列にマッチします。
2つの文字列完全一致は成功したと一致すると見なされています。
サンプル
サンプル1
输入:
"aa"
"a"
输出: false
出力2
输入:
"aa"
"aa"
输出: true
出力3
输入:
"aaa"
"aa"
输出: false
出力4
输入:
"aa"
"*"
输出: true
说明: '*' 可以替换任何字符串
出力5
输入:
"aa"
"a*"
输出: true
サンプル6
输入:
"ab"
"?*"
输出: true
说明: '?' -> 'a' '*' -> 'b'
サンプル7
输入: "aab" "c*a*b" 输出: false
クラスのソリューション: "" " @param S:文字列 ?@paramのP:文字列が含まれて""と"*" @return:?マッチは """ DEF isMatch(自己、S、P): #ここにあなたのコードを書きます self.cache = {} 戻りself.helper(S、P、s_at = LEN(S)-1、p_at = LEN(P)-1) デフヘルパー(自己、S、P、s_at、p_at): IF(s_at self.cacheで、p_at): 戻りself.cache [(s_at、p_at)] であればp_at <0: s_atリターン<0 s_at <0の場合: iに対して範囲(0、p_at + 1)において: もしP [I] != "*": Falseを返す 戻り値がTrue もしP [p_at] == '?': is_match = self.helper(S、P、s_at-1、p_at-1) のelif P [p_at] == '*': is_match = self.helper(S、P、 s_at-1、p_at)または\ self.helper(S、P、s_at、p_at-1) 他: is_match = s_at> = 0とS [s_at] == P [p_at]と\ self.helper(S、P 、s_at-1、p_at-1) self.cache [(s_at、p_at)]はis_match = 戻りis_matchを
その後の時間外、あなたはキャッシュしない場合があります。