LeetCode44题
用了回溯法,记录最后一个出现的位置,并第一次假设他是空字符串,以后如果出现了不匹配的问题,则回溯过去,并认为他多包涵了一个字符串,以此类推。如果结尾全部为,则为正确,否则则看前面的匹配情况。另附加了一部分特殊情况的处理
class Solution:
def isMatch(self, s: str, p: str) -> bool:
ls,lp=len(s),len(p)
sx=px=0
star=tmp=-1
while sx<ls:
if px<lp and p[px]in ['?',s[sx]]:
sx+=1
px+=1
elif px<lp and p[px]=='*':
star=px
tmp=sx
px+=1
elif star==-1:
return False
else:
px=star+1
sx=tmp+1
tmp=sx
return all(x == '*' for x in p[px:])