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

正则表达式匹配

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
全部评论

相关推荐

今天 10:56
门头沟学院 Java
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-11 13:34
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务