之前做這個題的時候特別凌亂,但這次會好很多,把思路分享出來,以及邊界的確定
思路:我們用倆個索引來控制字串和模式串已經匹配到達的位置,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 ...