leetcode 10 300 正規表示式 py

2022-09-10 02:00:19 字數 1651 閱讀 3490

以s="aab",p="c * a * b"來說明整個的過程

# 確定dp陣列的第一行,如果遇到了*,只要判斷其對應的前面兩個元素的dp值

# 注意:我們無需判斷p裡面的第乙個值是否為"*",如果為"*",那肯定匹配不到為fasle,原陣列正好是fasle,所以直接從2開始判斷即可

for j in range(2, n):

if p[j-1] == '*':

dp[0][j] = dp[0][j - 2]

for r in range(1, m):

i = r - 1 # 對應s中的元素

for c in range(1, n):

j = c - 1 # 對應p中的元素

if s[i] == p[j] or p[j] == '.':

dp[r][c] = dp[r - 1][c - 1]

elif p[j] == '*':

if p[j - 1] == s[i] or p[j - 1] == '.':

dp[r][c] = dp[r - 1][c] or dp[r][c - 2]

else:

dp[r][c] = dp[r][c - 2]

else:

dp[r][c] = false

return dp[m - 1][n - 1]

''''''

leetcode 動態規劃 鍵盤 正則式

class solution int dp n 1 表示第i次操作後最多能顯示多少個a,次數最多就是複製一次,全部貼上 memset dp,0,sizeof dp int half int sqrt n for int i 2 i n i return dp n 方法1 遞迴 class solut...

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 如...