解釋一下**(方便自己與大家閱讀):
一:首先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 均不匹配.分析 觀察模式串中第...