这道题对我来说,真的挺难的……我也是看了视频上别人的思路学来的……
# 作者:travis
# 创建时间::21:51
# 文件:正则匹配.py
# @DONE
class Solution:
def isMatch(self, s: str, p: str) -> bool:
def match(s,p,i,j):
if p[j]=='.':
return True
elif p[j]==s[i]:
return True
else:
return False
s_size = len(s)+1
p_size = len(p)+1
dp = [[False]*p_size for _ in range(s_size)]
dp[0][0]=True
for j in range(2,p_size):
dp[0][j]=dp[0][j-2] and p[j-1]=='*'
for i in range(0,s_size-1):
for j in range(0,p_size-1):
if p[j]=='*':
dp[i+1][j+1] = dp[i+1][j - 1] or(match(s,p,i,j-1) and dp[i][j+1])
else:
dp[i+1][j+1] = dp[i][j] and match(s,p,i,j)
for i in dp:
print(i)
return dp[s_size-1][p_size-1]
if __name__ == '__main__':
res = Solution().isMatch("aa","ab*a*c*a")
print(res)