NO44. 通配符匹配
作者:互联网
#和之前通配符匹配很像,dp的思路 class Solution: def isMatch(self, s: str, p: str) -> bool: vertical = len(p)+1 #纵向的长度,由于有初始start因此加一 level = len(s)+1 if set(p) == {"*"}: return True # *可以匹配包括空字符 #建表 table = [[False]*level for i in range(vertical)] #初始化全为False table[0][0] = True if p.startswith('*'): table[1] = level*[True] for i in range(1,vertical): path = False for j in range(1,level): if p[i-1]=='*': #判断出现'*'情况 if table[i-1][0]==True: #如果第一行为*,那全为True table[i] = [True]*level if table[i-1][j]: #如果上一行为True,令标志True path = True if path:#只要顶上有了True,就可以开通*接下来的所有道路 table[i][j]=True elif p[i-1] == "?" or p[i-1]==s[j-1]:#先判断字母是否符合 table[i][j] = table[i-1][j-1] #再看左上方格子是不是T return table[vertical-1][level-1] #https://leetcode.cn/problems/wildcard-matching/solution/yi-ge-qi-pan-kan-dong-dong-tai-gui-hua-dpsi-lu-by-/ #该博主的dp讲法很清晰
标签:NO44,匹配,vertical,level,False,通配符,path,table,True 来源: https://www.cnblogs.com/158-174/p/16502743.html