dp 萬用字元匹配leetcode44

2021-09-25 10:19:23 字數 604 閱讀 4124

這一題是劍指offer裡面的題目,但是書本裡的解法自頂向下,不太好理解。

假設string長度為s,pattern長度為p,設定狀態dp,為 `dp[s+1][p+1]`

狀態含義:dp[i][j]表示pattern的1到j位是否匹配s的1---i位

初始狀態:

dp[0][0] = 1

dp[0][i] = p[i] == '*' && dp[0][i-1]   這裡匹配前面的*號

狀態轉移:

dp[i][j] = 

當p[j]為*號的時候,可以不匹配*,也可以匹配*

匹配的時候,就是dp[i-1][j],不匹配的時候就是放過這個*號,也即是dp[i][j-1]

當p[j]為?或者p[j]==s[i]的時候,很簡單,直接匹配就可以了,dp[i][j] = dp[i-1][j-1]

最後返回最終狀態dp[s][p]

**如下. 

class solution 

for(int i=1; i<=ns; i++) else if(p[j - 1] == '*') }}

return dp[ns][np];

}};

DP萬用字元匹配

給定乙個字串 s 和乙個字元模式 p 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 輸入 s adceb p a b ...

leetcode 萬用字元匹配

給定乙個字串 s 和乙個字元模式 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例 1 輸入 s aa p a 輸出...

Leetcode之萬用字元匹配

給定乙個字串 s 和乙個字元模式 p 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例 1 輸入 s aa p a ...