美文网首页剑指offer- python实现
面试题19:正则表达式匹配

面试题19:正则表达式匹配

作者: 不会编程的程序猿甲 | 来源:发表于2020-03-04 12:50 被阅读0次

题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。

思路:这道题需要全面考虑:因为*比较特殊,可以与他前面0个-多个同一字符匹配,因此需要根据情况对*的情况进行考虑,具体如下思维导图:


正则表达式匹配.png

代码实现:

# -*-coding:utf-8 -*-
class Solution:
    # s, pattern都是字符串 利用递归实现
    def match(self, s, pattern):
        #特殊情况
        if len(s)==0 and len(pattern)==0:
            return True
        if (len(s)>0 and len(pattern)==0):
            return False
        # 1.第二个字符是*的情况
        if len(pattern)>1 and pattern[1]=='*':
            if len(s)>0 and (pattern[0]==s[0] or pattern[0]=='.'):  #模式匹配
                return self.match(s[1:],pattern) or self.match(s[1:],pattern[2:]) or self.match(s,pattern[2:])
            else:
                return self.match(s,pattern[2:])

        # 2. 第二个字符不是"*",包括只有一个字符的情况
        if (len(pattern)>1 and pattern[1]!='*') or len(pattern)==1:
            if len(s)>0 and (pattern[0]==s[0] or pattern[0]=='.'):
                return self.match(s[1:],pattern[1:])
            else:
                return False

s ="aaaa"
pattern = "a.a*"
print(Solution().match(s,pattern))

运行结果:

牛客网提交结果.png

相关文章

  • 正则表达式匹配

    《剑指offer》面试题19:正则表达式匹配 题目:请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字...

  • 剑指offer第二版-19.正则表达式匹配

    本系列导航:剑指offer(第二版)java实现导航帖 面试题19:正则表达式匹配 题目要求:实现正则表达式中.和...

  • 剑指offer学习笔记:8.2 字符串

    面试题53:正则表达式匹配请实现一个函数用来匹配包含'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符...

  • Nginx 匹配规则

    无 :默认匹配,普通匹配 = :精确匹配 ~* :匹配正则表达式,不区分大小写 ~ :匹配正则表达式,区分大小写 ...

  • 面试题19:正则表达式匹配

    请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以...

  • 面试题19:正则表达式匹配

    题目 请实现一个函数用来匹配‘.’和‘ * ’的正则表达式。模式中的字符‘.’表示任意一个字符,而‘*’表示它前面...

  • 面试题19:正则表达式匹配

    题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面...

  • 面试题19:正则表达式匹配

    题目:请实现一个函数用来匹配包含‘.’和‘’的正则表达式。模式中的字符‘.’表示任意一个字符,而‘’表示它前面的字...

  • 2019.8.15分享:正则表达式字符匹配攻略

    一、正则表达式 正则表达式是匹配模式,要么匹配字符,要么匹配位置。 这次分享主要将提下正则表达式字符匹配 • 两种...

  • python与正则表达式 2020-01-02(未经允许,禁止转

    正则表达式 正则表达式与程序语言无关。正则表达式做匹配实际上就做3件事:【字符匹配】+【次数匹配】+【逻辑匹配】下...

网友评论

    本文标题:面试题19:正则表达式匹配

    本文链接:https://www.haomeiwen.com/subject/dfzllhtx.html