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
  • 相关阅读:
    超级楼梯
    超级楼梯
    母牛的故事
    母牛的故事
    蟠桃记
    蟠桃记
    Children’s Queue
    Children’s Queue
    http://202.194.116.8/webapps/portal/frameset.jsp?tab_id=_2_1&url=%2fwebapps%2fblackboard%2fexecute%2
    Matlab位运算笔记
  • 原文地址:https://www.cnblogs.com/asenyang/p/11020944.html
Copyright © 2011-2022 走看看