2020年12月14日未解出改题
题目
个人解
# anaconda 运行代码,因为在LeetCode中未运行通过,就不放LeetCode的代码了
s='ab'
p='.*c'
def isMatch(s,p):
Ssize,Psize=len(s),len(p)
Shead,Phead=0,0
if Psize==0 or Ssize==0:
return False
while Shead<Ssize and Phead<Psize :
if p[Phead]=='.' or p[Phead]==s[Shead]:
Shead+=1
Phead+=1
elif p[Phead]=='*' and p[Phead-1]=='.':
Shead=Ssize
Phead+=1
elif p[Phead]=='*':
while s[Shead]==s[Shead-1]:
if Shead+1==Ssize:
Shead+=1
break
Shead+=1
Phead+=1
elif Phead+1<Psize and p[Phead+1]=='*':
Phead+=2
else:
return False
print(Shead,Phead)
if Shead==Ssize and Phead==Psize:
return True
else :
return False
print(isMatch(s,p))
这个代码能够适应很多情况,但是由于是if语句拼接而成所以也成为了最致命的问题,如下面的例子:
s='ab' p='.*b'
s='aaa' p='a*a'
单纯的叠加if,显然不是良策,所以写完这句话我就要去看解析了。
详解动态规划
真的又是动态规划,现在的我虽然还有些疑惑,但是对状态转移方程又加深了理解,
多看评论