zoukankan      html  css  js  c++  java
  • 剑指Offer 19 正则表达式匹配

    正则表达式匹配

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

     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     # s, pattern都是字符串
     4     def match(self, s, pattern):
     5         m,n = len(s),len(pattern)
     6         dp = [[False for _ in range(n+1)]for _ in range(m+1)]
     7         dp[0][0] = True
     8         for i in range(1,n+1):
     9             if (pattern[i-1] == '*'):
    10                 dp[0][i] = dp[0][i-2]
    11         for i in range(1,m+1):
    12             for j in range(1,n+1):
    13                 if s[i-1] == pattern[j-1] or pattern[j-1] == '.':
    14                     dp[i][j] = dp[i-1][j-1]
    15                 elif pattern[j-1] == '*':
    16                     if pattern[j-2] == s[i-1] or pattern[j-2] == '.':
    17                         dp[i][j] |= dp[i][j-1]
    18                         dp[i][j] |= dp[i-1][j]
    19                         dp[i][j] |= dp[i][j-2]
    20                     else:
    21                         dp[i][j] = dp[i][j-2]
    22         return dp[m][n]
    23         # write code here
  • 相关阅读:
    JavaScript闭包基本概念
    JavaScript函数
    JavaScript类型比较
    Java思维导图之Class对象
    Python进阶之装饰器
    Java IO学习要点导图
    sl003完全平方数
    sl002个税计算
    sl001数字拼接
    装饰器
  • 原文地址:https://www.cnblogs.com/asenyang/p/11020944.html
Copyright © 2011-2022 走看看