給定乙個字串 (s) 和乙個字元模式 (p) ,實現乙個支援 '?' 和 '*' 的萬用字元匹配。
'?' 可以匹配任何單個字元。
'*' 可以匹配任意字串(包括空字串)。
兩個字串完全匹配才算匹配成功。
說明: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 ="*a*b"
輸出: true
解釋: 第乙個 '*' 可以匹配空字串, 第二個 '*' 可以匹配字串 "dce"
.示例 5
:輸入:
s ="acdcb"
p ="a*c?b"
輸出: false
使用動態規劃方法。
在給定的模式中p中,只有三種型別的字元:
dp[0][0]=true,s和p都為空時,匹配成功
dp[i][0]=false空模式和任何非空串不匹配
dp[0][j]分為兩種情況,如果前j個p都為*,則匹配成功,從p不為*開始,匹配不成功。
class
solution
for(
int i=
1;i<=m;i++
)// ?或者小寫字母匹配
else
if(p[j-1]
=='?'
||s[i-1]
==p[j-1]
)}}return dp[m]
[n];}}
;
Leetcode刷題筆記
1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...
LeetCode刷題筆記
實現strstr 給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 haystack aaaa...
LeetCode刷題筆記
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...