【面试题19】正则表达式匹配

在这里插入图片描述
Python题解

# -*- coding:utf-8 -*-
class Solution:
    # s, pattern都是字符串
    def match(self, s, pattern):
        def matchCore(s, i, pattern, j):
            if i == len(s) and j == len(pattern):
                return True
            if i != len(s) and j == len(pattern):
                return False
            if j+1 < len(pattern) and pattern[j+1] == "*":
                #模式第二个字符是*,且字符串与模式首字符相等,再往下分三种情况;否则,模式后移2位
                if (i != len(s) and pattern[j] == s[i]) or (pattern[j] == "." and i != len(s)):
                    #1.匹配一个 2.匹配一个,后面继续匹配 3.不匹配
                    return matchCore(s, i+1, pattern, j+2) \
                or matchCore(s, i+1, pattern, j) \
                or matchCore(s, i, pattern, j+2)
                else:
                    return matchCore(s, i, pattern, j+2)
            if (i != len(s) and pattern[j] == s[i]) or (pattern[j] == "." and i != len(s)):
                return matchCore(s, i+1, pattern, j+1)
            return False
        i, j = 0, 0
        return matchCore(s, i, pattern, j)

考点

  • 考查对字符串的编程能力;
  • 考查对正则表达式的理解;
  • 考查思维的全面性。要全面考虑普通字符、".“和”*“并分析它们的匹配模式。在测试阶段,要充分考虑普通字符、”.“和”*"三者的排列组合,尽量完备的想出所有可能的测试用例。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章