劍指offer 正規表示式匹配(python)

2021-10-02 06:47:08 字數 1306 閱讀 6960

解釋一下**(方便自己與大家閱讀):

一:首先s與pattern都為空,true

二:s非空,pattern為空,false

三:s為空,pattern非空不確定

四:首先判斷有無*

4.若第二個為*,則看第乙個字母,

4-1如果s非空並且s[0]與pattern匹配,則進行遞迴,此時分為三種情況:

4-1-1.*表示前面字元0個,則需要比較s與pattern[2:]

4-1-2.*表示前面字元1個,則需要比較s[1:]與pattern[2:]

4-1-3.*表示前面字元多個,則需要比較s[1:]與pattern

4-2若不滿足,則比較s與pattern[2:]

五:最後沒有*的時候很好判斷,直接跳過乙個字元位置就行

# -*- coding:utf-8 -*-

class

solution

:# s, pattern都是字串

defmatch

(self, s, pattern)

:# write code hereif(

len(s)==0

andlen

(pattern)==0

):return

trueif(

len(s)

>

0and

len(pattern)==0

):return

falseif(

len(pattern)

>

1and pattern[1]

=='*'):

if(len(s)

>

0and

(s[0

]== pattern[0]

or pattern[0]

=='.'))

:return self.match(s[1:

],pattern)

or self.match(s[1:

],pattern[2:

])or self.match(s,pattern[2:

])else

:return self.match(s,pattern[2:

])if(

len(s)

>

0and

(pattern[0]

=='.'

or pattern[0]

== s[0]

)):return self.match(s[1:

], pattern[1:

])return

false

劍指offer 正規表示式匹配

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

劍指Offer 正規表示式匹配

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

劍指offer 正規表示式匹配

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