LeetCode刷題筆記 萬用字元匹配

2021-10-08 17:50:51 字數 1150 閱讀 4603

給定乙個字串 (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 輸出 ...