进行减法操作,分为两种情况先:
看前面和后面:
查看前面的这种比如,字符串aaa 和模式 baa这两种,前面的第一个字符不是对应相等的,返回false
做减法:模式长度大于2,并且判断后面还有字符,如果前面的不相等:返回的是第一次匹配的+从后面匹配的,就是删除掉模式前面的内容,匹配剩下的
否则,就是前面的内容相等,那就剪掉字符的内容,依次剪掉所有字符串里面和前面相等的内容。因为*前可以重复任意次。
附上代码:
class Solution: def match(self , str , pattern ): # write code here if not pattern: return not str first = bool(str) and pattern[0] in {str[0], '.'} if len(pattern)>= 2 and pattern[1] == '*': return first and self.match(str[1:] , pattern) or self.match(str, pattern[2:]) # return self.match(str , pattern[2:]) or first and self.match(str[1:], pattern)//有个坑:这里主要测试and 和or的用法,因为and是返回判断内容的最后一个值 else: return self.match(str[1:], pattern[1:]) and first