LeetCode 010 正規表示式匹配

2021-09-16 22:27:43 字數 1289 閱讀 4399

010 正規表示式匹配

給定乙個字串 (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

思路:用動態規劃,要分好幾種情況

dp表示boolean型別陣列,是否能匹配

dp[i][j] = dp[i - 1][j - 1], 如果s[i] == p[j] || p[j] == '.'

dp[i][j - 2], 如果p[j] == '*' && s[i] != p[j - 1]

dp[i - 1][j] || dp[i][j - 1] || dp[i - 1][j - 1] || dp[i - 1][j - 2] || dp[i][j - 2], 如果p[j] == '*' && s[i] == p[j - 1]

**:

public static boolean ismatch(string s, string p) 

if(p.charat(j - 1) == '*') else }}

}return matched[ns - 1][np - 1];

}

注意:要考慮全思路,特別是為*時,前面是否要取,自己是否也取…

求眾數 leetcode 刷題010

給定乙個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列 現次數大於 n 2 的元素。你可以假設陣列是非空的,並且給定的陣列總是存在眾數。示例 1 輸入 3,2,3 輸出 3 示例 2 輸入 2,2,1,1,1,2,2 輸出 2 乍一看,這道題思路清晰,而且題目還給出提示,照理來說,應該這樣寫 c...

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