給定乙個字串 (s) 和乙個字元模式 § ,實現乙個支援 『?』 和 『*』 的萬用字元匹配。
『?』 可以匹配任何單個字元。
『*』 可以匹配任意字串(包括空字串)。
兩個字串完全匹配才算匹配成功。
說明:s 可能為空,且只包含從 a-z 的小寫字母。
p 可能為空,且只包含從 a-z 的小寫字母,以及字元 ? 和 *。
示例 1:
輸入:s = 「aa」
p = 「a」
輸出: false
解釋: 「a」 無法匹配 「aa」 整個字串。
示例 2:
輸入:s = 「aa」
p = ""
輸出: true
解釋: '』 可以匹配任意字串。
示例 3:
輸入:s = 「cb」
p = 「?a」
輸出: false
解釋: 『?』 可以匹配 『c』, 但第二個 『a』 無法匹配 『b』。
示例 4:
輸入:s = 「adceb」
p = 「ab」
輸出: true
解釋: 第乙個 『』 可以匹配空字串, 第二個 '』 可以匹配字串 「dce」.
示例 5:
輸入:s = 「acdcb」
p = 「a*c?b」
輸出: false
採用動態規劃, 用乙個二維布林陣列,boolean dp = new boolean[slen + 1][plen + 1]
長度為什麼要是字串長度 + 1? 是為了將字元為空這一情況也算進去
dp[i][j]
表示字元前 i 個和匹配模式前 j 個是否匹配成功
邊界條件
開始填寫二維陣列
最後返回dp[slen][plen]
class
solution
else
}for
(int i =
1; i <= slen; i++
)// 如果s[i] == p[j]或p[j] == '?'
else
if(s.
charat
(i -1)
== p.
charat
(j -1)
|| p.
charat
(j -1)
=='?')}
}return dp[slen]
[plen];}
}
LeetCode 044 萬用字元匹配
044 萬用字元匹配 題目 給定乙個字串 s 和乙個字元模式 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 方法 動態...
bzoj3507 Cqoi2014 萬用字元匹配
我們將題目輸入的那個含萬用字元的串,記為 萬用字元串 下面的檔名記為 檔名 檔名 數量很少可以依次查詢。我們先將 萬用字元串 以 為界,將 萬用字元串 分解,得到若干子串,記為 通配子串 我們將每個 通配子串 各建立乙個 ac自動機。而有的 通配子串 可能含 萬用字元,我們將再次按 為界,分解這個 ...
BZOJ3507 Cqoi2014 萬用字元匹配
必須要記住字串很好卡一不小心就o n 別問我為什麼這麼說.qaq 這題首先滿足位數與字母兩個限制,那麼我們 分大塊?分小塊,求各塊hash值,同時預處理出來每個字串的字首hash這樣就可以o 1 對比了 千萬不要忘記hash字串對比的功能,我在考試的時候一腦抽就忘了.include include ...