记录一下
class Solution(object):
def isMatch(self, s, p):
if s==p:
return True
if p=='':
return False
s_cur=0
p_cur=0
while True:
if p_cur>=len(p) and s_cur<len(s):
return False
if p_cur==len(p) and s_cur==len(s):
return True
if p[p_cur]=='*':
return False
if (p_cur==len(p)-1 or (p_cur+1<len(p) and p[p_cur+1]!='*')):
if s_cur>=len(s):
return False
if p[p_cur]=='.':
p_cur+=1
s_cur+=1
continue
if p[p_cur]!=s[s_cur]:
return False
p_cur+=1
s_cur+=1
continue
if p_cur+1<len(p) and p[p_cur+1]=='*':
if self.isMatch(s[s_cur:],p[p_cur+2:]):
return True
while s_cur<len(s) and (p[p_cur] == '.' or p[p_cur] == s[s_cur]):
if self.isMatch(s[s_cur+1:],p[p_cur+2:]):
return True
s_cur+=1
return False