難度:困難
給你乙個字串s
和乙個字元規律p
,請你來實現乙個支援'.'
和'*'
的正規表示式匹配。
所謂匹配,是要涵蓋整個字串s
的,而不是部分字串。
示例1
輸入:s = "aa" p = "a"
輸出:false
解釋:"a" 無法匹配 "aa" 整個字串。
示例2
輸入:s = "aab" p = "c*a*b"
輸出:true
解釋:因為 '*' 表示零個或多個,這裡 'c' 為 0 個, 'a' 被重複一次。
因此可以匹配字串 "aab"。
以 s=a
a,p=
a∗
s=aa,\;p=a*
s=aa,p
=a∗ 為例,則dp
可表示為下表空白a
*空白true
false
true
afalse
true
true
afalse
false
true
難點:出現'*'
時,要考慮多種情況
// 初始陣列全為false,故**仍可以繼續簡化
class
solution
// 初始化第一行
for(
int j =
1; j < plen +
1; j++
)else
}// 轉移方程
for(
int i =
1; i < slen +
1; i++
)else
else
else}}
else}}
}return dp[slen]
[plen];}
}
Leetcode 正規表示式匹配
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...
leetcode正規表示式匹配
暴力求解 動態規劃,如果p j s i 那麼dp i j dp i 1 j 1 意思就是說,如果p的第j個字元和s的第i個字元匹配上了,那麼dp i j 是否為true取決於dp i 1 j 1 如果p j 那麼p j 此時就可以匹配任意字元,情況就和1一樣了,dp i j dp i 1 j 1 如...
Leetcode 正規表示式匹配問題
給定乙個字串 s 和乙個字元模式 p 實現支援 和 的正規表示式匹配。匹配任意單個字元。匹配零個或多個前面的元素。匹配應該覆蓋整個字串 s 而不是部分字串。說明 示例 1 輸入 s aa p a 輸出 false解釋 a 無法匹配 aa 整個字串。示例 2 輸入 s aa p a 輸出 true解釋...