LeetCode學習記錄(10)

2021-09-08 09:33:53 字數 1339 閱讀 2136

給定乙個字串 (s) 和乙個字元模式 §。實現支援 『.』 和 『*』 的正規表示式匹配。

『.』 匹配任意單個字元。

『*』 匹配零個或多個前面的元素。

匹配應該覆蓋整個字串 (s) ,而不是部分字串。

說明:s 可能為空,且只包含從 a-z 的小寫字母。

p 可能為空,且只包含從 a-z 的小寫字母,以及字元 . 和 *。

示例 1:

輸入:s = 「aa」

p = 「a」

輸出: false

解釋: 「a」 無法匹配 「aa」 整個字串。

示例 2:

輸入:s = 「aa」

p = 「a*」

輸出: true

解釋: 『*』 代表可匹配零個或多個前面的元素, 即可以匹配 『a』 。因此, 重複 『a』 一次, 字串可變為 「aa」。

示例 3:

輸入:s = 「ab」

p = 「."

輸出: true

解釋: ".」 表示可匹配零個或多個(』*』)任意字元(』.』)。

示例 4:

輸入:s = 「aab」

p = 「cab」

輸出: true

解釋: 『c』 可以不被重複, 『a』 可以被重複一次。因此可以匹配字串 「aab」。

示例 5:

輸入:s = 「mississippi」

p = 「misisp*.」

輸出: false

**展示:

class solution:

def ismatch(self, s, p):

""":type s: str

:type p: str

:rtype: bool

"""i, j = 0, 0

dp = [ [ false for _ in range(len(p)+1) ] for __ in range(len(s)+1) ]

dp[len(s)][len(p)] = true

for i in range(len(s),-1,-1):

j = len(p)-1

while j >= 0:

if p[j] == '*':

j-=1

dp[i][j] = dp[i][j+2] \

or (ior (ielif i < len(s):

dp[i][j] = ( s[i] == p[j] and dp[i+1][j+1] ) \

or (p[j] == '.' and dp[i+1][j+1])

j -= 1

return dp[0][0]

LeetCode 刷題記錄(10)

這幾天拯救世界去了 就是偷懶了 一直沒更博。這次練習的是leetcode上標籤為動態規劃 列表為熱題top100 難度為中等的幾道題目。題解有官方題解也有個人題解,有的地方意思可能表達得不是很清楚也可能存在錯誤,有問題請提出,感謝 題目描述 給定乙個整數 n,求以 1 n 為節點組成的二叉搜尋樹有多...

python學習記錄 10

測試題 0.列表都可以存放一些什麼東西?字串 數值 列表 1.向列表增加元素有哪些方法?4.有列表 name f i h c 如果小甲魚想要在元素 i 和 h 之間插入元素 s 應該使用什麼方法來插入?insert 2,s 動動手 0.自己動手試試看,並分析在這種情況下,向列表新增資料應當採用哪種方...

linux學習記錄10

ssh 遠端控制 建立網絡卡模板 命令 nmcli connection show 檢視網絡卡資訊 點選虛擬機器的虛擬網路編輯器 選vm1 點選使用本地dhcp 確定 nmcli connection add con name company ifname eno16777728 autoconne...