题解 | #正则表达式匹配#

正则表达式匹配

http://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4

进行减法操作,分为两种情况先:
前面和后面:
查看
前面的这种比如,字符串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
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务