【LeetCode】Wildcard Matching 串匹配 動態規劃
<span style="font-size:18px;">/*LeetCode WildCard matching
* 題目:給定一個目標串和一個匹配串,判定是否能夠匹配
* 匹配串中的定義:字元————>字元,*————>0個、1個或者多個字元,?——————>對應任意一個字元
* 思路:動態規劃:*:dp[i][j] = dp[i][j-1] || dp[i-1][j]
* ? || s[i] == p[i] :dp[i][j] = dp[i-1][j-1]
*/
package javaTrain;
public class Train23 {
public boolean isMatch(String s, String p) {
int len_s = s.length();
int len_p = p.length();
char[] sArray = new char[len_s];
char[] pArray = new char[len_p];
sArray = s.toCharArray();
pArray = p.toCharArray();
boolean dp[][] = new boolean[500][500]; //用於記錄每個子問題的解
int lens = 0;
if(len_p != 0){
for(int i = 0;i < len_p;i++)
if(pArray[i] != '*') lens++;
}
if(lens > len_s) return false;
dp[0][0] = true; //兩個串都是空的for
for(int j = 1;j <= len_p;j++){
if(dp[0][j-1] && pArray[j-1] == '*') dp[0][j] = true;
for(int i = 1;i <= len_s;i++){
if(pArray[j-1] == '*') dp[i][j] = dp[i][j-1] || dp[i-1][j];
else if(pArray[j-1] == '?'||pArray[j-1] == sArray[i-1]) dp[i][j] = dp[i-1][j-1];
else dp[i][j] = false;
}
}
return dp[len_s][len_p];
}
}
</span>
相關文章
- LeetCode 分割回文串II(動態規劃)LeetCode動態規劃
- Leetcode-Wildcard MatchingLeetCode
- Wildcard Matching leetcode javaLeetCodeJava
- [leetcode] 動態規劃(Ⅰ)LeetCode動態規劃
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- [LeetCode] Regular Expression Matching 正規表示式匹配LeetCodeExpress
- leetcode:動態規劃( hard )LeetCode動態規劃
- [動態規劃] 六、最長迴文子串動態規劃
- leetcode總結——動態規劃LeetCode動態規劃
- leetcode題解(動態規劃)LeetCode動態規劃
- LeetCode動態規劃總結LeetCode動態規劃
- 【LeetCode】Word Break 動態規劃LeetCode動態規劃
- 迴文串問題(動態規劃DP C++)動態規劃C++
- SYZOJ - 補充構造迴文串(動態規劃)動態規劃
- 【leetcode】741 摘櫻桃(動態規劃)LeetCode動態規劃
- leetcode-動態規劃總結LeetCode動態規劃
- 【LeetCode】Word Break II 動態規劃LeetCode動態規劃
- 【動態規劃(一)】動態規劃基礎動態規劃
- [LeetCode] 動態規劃題型總結LeetCode動態規劃
- Leetcode 編輯距離(動態規劃)LeetCode動態規劃
- LeetCode 動態規劃 House Robber 習題LeetCode動態規劃
- [leetcode 1235] [動態規劃]LeetCode動態規劃
- 動態規劃題:把一個字串變為迴文串動態規劃字串
- 動態規劃動態規劃
- 【劍指 Offer 19. 正規表示式匹配】【Python】【動態規劃】Python動態規劃
- LeetCode入門指南 之 動態規劃思想LeetCode動態規劃
- LeetCode:動態規劃+貪心題目整理LeetCode動態規劃
- LeetCode 343. 整數拆分--動態規劃LeetCode動態規劃
- 【LeetCode】55. 跳躍遊戲 (動態規劃)LeetCode遊戲動態規劃
- 動態規劃分析動態規劃
- 動態規劃(DP)動態規劃
- 動態規劃初步動態規劃
- 模板 - 動態規劃動態規劃
- 動態規劃法動態規劃
- Leetcode 題解演算法之動態規劃LeetCode演算法動態規劃
- LeetCode總結,動態規劃問題小結LeetCode動態規劃
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- 演算法系列-動態規劃(1):初識動態規劃演算法動態規劃