劍指offer 19 正規表示式匹配 C

2021-10-06 18:01:51 字數 989 閱讀 8011

題目描述

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

class

solution

bool

matchsub

(char

* str,

char

* pattern)if(

*pattern ==

*str ||

(*pattern ==

'.'&&

*str!=

'\0'))

return

matchsub

(str +

1, pattern +1)

;return

false;}

};

思路2:含有重疊子問題,考慮動態規劃

class

solution}}

return dp[str.

size()

][pattern.

size()

];//返回最後字元的匹配狀態}}

;

總結:

如果 p[j] == s[i] : dp[i][j] = dp[i-1][j-1]

如果 p[j] == 『.』 : dp[i][j] = dp[i-1][j-1]

如果 p[j] == 『*』 :

1> 如果 p[j-1] != s[i] : dp[i][j] = dp[i][j-2]

2> 如果 p[j-1] == s[i] || p[j-1] == 『.』:

dp[i][j] = dp[i-1][j] 匹配多次

dp[i][j] = dp[i][j-2] 匹配0次

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