LeetCode 10 正規表示式匹配

2022-09-20 20:48:14 字數 721 閱讀 2190

leetcode 10 正規表示式匹配

題目大意:

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

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

題解:

參考自leedcode官方題解

題目中的匹配是一「逐步匹配」的過程:我們每次從字串\(p\)中取出乙個字元或者「字元+星號」的組合,並在\(s\)中進行匹配。對於\(p\)中乙個字元而言,它只能在\(s\)中匹配乙個字元,匹配的方法具有唯一性;而對於\(p\)中「字元+星號」的組合而言,它可以在\(s\)中匹配任意自然數個字元,並不具有唯一性。因此我們可以考慮使用動態規劃,對匹配的方案進行列舉。

我們用\(f[i][j]\)表示\(s\)的前\(i\)個字元與\(p\)中的前\(j\)個字元是否能夠匹配。在進行狀態轉移時,我們考慮\(p\)的第\(j\)個字元的匹配情況:

\[f[i][j]=

\left\

f[i-1][j-1],&s[i]=p[j] \\

false,&s[i]\neq p[j]

\end

\right.

$$也就是說,如果 ss 的第 ii 個字元與 pp 的第 jj 個字元不相同,那麼無法進行匹配;否則我們可以匹配兩個字串的最後乙個字元,完整的匹配結果取決於兩個字串前面的部分。\]

LeetCode10 正規表示式

給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...

LeetCode 10 正規表示式匹配

實現支援 和 的正規表示式匹配。匹配任意單個字元。匹配零個或多個前面的元素。匹配應該覆蓋整個輸入字串 不是部分字串 函式 bool ismatch const char s,const char p 例子 ismatch aa a false ismatch aa aa true ismatch a...

leetCode 10 正規表示式匹配

這道題花了功夫,所以把想到的的寫下來。這個要從字串的屁股開始匹配。道理很簡單,從正面匹配,匹配的方式很多,需要全部列舉,不利於縮小問題規模,舉個例子,aac和a a a c,從正面開始匹配,從全部需要列舉的匹配情況中舉幾個例子 aac匹配a a a c,匹配a a a c,匹配a a a c。從屁股...