演算法 正規表示式匹配

2021-10-09 05:13:11 字數 1234 閱讀 2139

給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 『.』 和 『*』 的正規表示式匹配。

『.』 匹配任意單個字元

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

所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。

說明:

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

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

示例 1:

輸入: s = 「aa」 p = 「a」

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

示例 2:

輸入: s = 「aa」 p = 「a*」

輸出: true

解釋: 因為 『』 代表可以匹配零個或多個前面的那乙個元素,在這裡前面的元素就是 『a』。因此,字串 「aa」 可被視為 『a』 重複了一次。

示例 3:

輸入: s = 「ab」 p = "."

輸出: true

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

示例 4:

輸入: s = 「aab」 p = 「cab」

輸出: true

解釋: 因為 '』 表示零個或多個,這裡 『c』 為 0個, 『a』 被重複一次。因此可以匹配字串 「aab」。

示例 5:

輸入: s = 「mississippi」 p = "misisp."

輸出: false

過程複雜,比較難,參考:分析

public

boolean

ismatch

(string s, string p)

}else}}

}return f[m]

[n];

}public

boolean

matches

(string s, string p,

int i,

int j)

if(p.

charat

(j -1)

=='.'

)return s.

charat

(i -1)

== p.

charat

(j -1)

;}/**有點難,不會,直接複製吧。。

**/

正規表示式匹配演算法

看 之美 之美中有個簡短而高效的正規表示式匹配演算法,這裡給一下簡單的實現,供學習使用。include include includeusing namespace std int match char regexp,char text int matchhere char regexp,char ...

演算法 正規表示式匹配。

給你乙個字串s和乙個字元規律p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。輸入 s aa p a 輸出 false解釋 a 無法匹配 aa 整個字串。輸入 s aa p a 輸出 true 解釋 ...

演算法 正規表示式匹配

單純做個記錄 題目會給我們輸入兩個字串s和p,s代表文字,p代表模式串,請你判斷模式串p是否可以匹配文字s。正則表達演算法問題只需要把住乙個基本點 看兩個字元是否匹配,一切邏輯圍繞匹配 不匹配兩種情況展開即可。動態規劃演算法的核心就是 狀態 和 選擇 狀態 無非就是i和j兩個指標的位置,選擇 就是p...