思路:考慮動態規劃,dp矩陣表示s與p部分字串是否匹配。
第一行,當p中為『 * 』 時,match[0][i]=match[0][i-2];
當p中為』 . '或p中字元等於s中字元時,match[si][pi]=match[si-1][pi-1];
當p中為』 * '時,
(1) 若 』 * 『前面的字元等於s中字元,或』 * 『前面的字元為』 .』 ,則match[si][pi]=match[si][pi-2] || match[si-1][pi];
(2) 否則,match[si][pi]=match[si][pi-2];
最後返回矩陣最右下角的數match[s.length()][p.length()]
class
solution
boolean
match=
newboolean
[s.length()
+1][p.
length()
+1];
//boolean宣告的時候預設都是false
match[0]
[0]=
true
;for
(int i=
1;i<=p.
length()
;i++)}
for(
int si=
1;si<=s.
length()
;si++
)else
if(p.
charat
(pi-1)
=='*'
)else}}
}return match[s.
length()
][p.
length()
];}}
LeetCode學習記錄(10)
給定乙個字串 s 和乙個字元模式 實現支援 和 的正規表示式匹配。匹配任意單個字元。匹配零個或多個前面的元素。匹配應該覆蓋整個字串 s 而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例 1 輸入 s aa p a 輸...
LeetCode 刷題記錄(10)
這幾天拯救世界去了 就是偷懶了 一直沒更博。這次練習的是leetcode上標籤為動態規劃 列表為熱題top100 難度為中等的幾道題目。題解有官方題解也有個人題解,有的地方意思可能表達得不是很清楚也可能存在錯誤,有問題請提出,感謝 題目描述 給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多...
LeetCode10 正規表示式
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...