劍指 Offer 19 正規表示式匹配

2021-10-21 00:19:35 字數 1015 閱讀 1822

dp陣列含義:dp[i][j]代表 a的前 i 個字元和 b 的前 j 個字元能否匹配

轉移方程:需要注意,由於dp[0][0]代表的是空字元的狀態, 因此 dp[i][j] 對應的新增字元是s[i - 1] 和 p[j - 1]

初始化:

class

solution

// 狀態轉移:填寫dp陣列剩餘部分

//之所以下標都從1開始,是因為下標0代表的是空串,而兩個字串的空串情況我們在上面已經初始化完了,現在考慮的是二者都不為空串的情況

for(

int i =

1; i < m; i++

)//讓字元 b[j - 2] 多出現 1 次時,能否匹配;

else

if(dp[i -1]

[j]&& a.

charat

(i -1)

== b.

charat

(j -2)

)//讓字元 '.' 多出現 1 次時,能否匹配;

else

if(dp[i -1]

[j]&& b.

charat

(j -2)

=='.')}

else

else

if(dp[i -1]

[j -1]

&& b.

charat

(j -1)

=='.')}

}}return dp[m-1]

[n-1];

}}

劍指Offer 19 正規表示式匹配

之前做這個題的時候特別凌亂,但這次會好很多,把思路分享出來,以及邊界的確定 思路 我們用倆個索引來控制字串和模式串已經匹配到達的位置,index1和index2,這個問題就難在有 的位置,我們需要考慮下乙個位置為 時候怎麼處理 1.模式串的index2下乙個位置為 1 字串的index1位置與模式串...

劍指offer19 正規表示式匹配

2.如果第二位是 第一位如果匹配,則三種情況 有一種為true,則結果為true 3.其餘情況一位一位比較 class solution s,pattern都是字串 defmatch self,s,pattern write code hereif len s 0 andlen pattern 0 ...

劍指offer 19 正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 ab a 表示b可以出現任...