劍指Offer 19 正規表示式匹配

2021-08-21 11:47:00 字數 991 閱讀 1967

之前做這個題的時候特別凌亂,但這次會好很多,把思路分享出來,以及邊界的確定

​思路:我們用倆個索引來控制字串和模式串已經匹配到達的位置,index1和index2,

​ 這個問題就難在有*的位置,我們需要考慮下乙個位置為*時候怎麼處理

​ 1.模式串的index2下乙個位置為*

​ 1)字串的index1位置與模式串index2位置是匹配的或者index2位置為.

​ (1)index2位置字元出現0次

​ 或者(2)index2位置字元出現大於0次

​ 2)字串的index1位置與模式串index2位置是不匹配的

​ index2當前位置的字元出現0次

​ 2.模式串的index2下乙個位置不為*

​ 1)字串index1與模式串index2位置匹配或者index2位置為 . ,向下乙個位置遍歷

​ 2)否則返回false;

​​以上是大體的思路,但是細節還需要考慮,我們這個題需要用遞迴去做,那麼需要考慮遞迴出口,

​1.模式串和字串均到末尾,直接返回true

​2.模式串到末尾,字串沒有到末尾,直接返回false

​3.還有一種就是字串到末尾,模式串沒有到末尾,這裡我們直接把他放進具體情況去考慮

​​具體情況中,當需要判斷index1位置與index2位置進行判斷匹配的時候,我們需要判斷index1是否

​達到末尾,如果沒有達到就跟最上面寫的偽**一樣,如果到達末尾了,就需要仔細考慮下:

​1.index2下乙個位置不為*,那麼返回false

​2.index2下乙個位置為*,那麼index2當前位置的字元出現0次。​​

public class solution

public boolean mm(charstr, char pattern, int index1, int index2 )

​ // 下乙個字元為*

else}}

劍指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可以出現任...

劍指 Offer 19 正規表示式匹配

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