• 正则匹配


    lc10, *可以匹配0个或者多个前一个字符

     1 class Solution(object):
     2     def isMatch(self, s, p):
     3         """
     4         :type s: str
     5         :type p: str
     6         :rtype: bool
     7         """
     8         m=len(s)+1
     9         n=len(p)+1
    10 
    11         dp=[[False for j in range(n)] for i in range(m)] 
    12         dp[0][0]=True
    13 
    14         for j in range(1,n):
    15             if(j>=2 and p[j-1]=="*" and dp[0][j-2]==True ):
    16                 dp[0][j]=True
    17 
    18         for i in range(1,m):
    19             for j in range(1,n):
    20                 if(s[i-1]==p[j-1] or p[j-1]=="."):
    21                     dp[i][j]=dp[i-1][j-1]
    22                 elif p[j-1]=="*":
    23                     if(s[i-1]!=p[j-2] and p[j-2]!="."):
    24                         dp[i][j]=dp[i][j-2]
    25                     else:
    26                         dp[i][j]=dp[i][j-2] or dp[i][j-1] or dp[i-1][j]
    27         
    28         return dp[-1][-1]

    lc44 *可以匹配任意字符串

     1 class Solution(object):
     2     def isMatch(self, s, p):
     3         """
     4         :type s: str
     5         :type p: str
     6         :rtype: bool
     7         """
     8         m=len(s)+1
     9         n=len(p)+1
    10 
    11         dp=[[False for j in range(n)] for i in range(m)]
    12         dp[0][0]=True
    13 
    14         for j in range(1,n):
    15             if (p[j-1]=='*' and dp[0][j-1]==True):
    16                 dp[0][j]=True
    17         
    18         for i in range(1,m):
    19             for j in range(1,n):
    20                 if(s[i-1]==p[j-1] or p[j-1]=='?'):
    21                     dp[i][j]=dp[i-1][j-1]
    22                 elif p[j-1]=="*":
    23                             # *表示空字符时; *表示任意字符,
    24                     dp[i][j]=dp[i][j-1] or dp[i-1][j]
    25 
    26         return dp[-1][-1]
  • 相关阅读:
    Annotation
    injector
    Java容器(container)
    build tool(构建工具)maven和gradle安装方法
    version control(版本控制)
    函数式编程
    URI与URL
    超文本传输协议HTTP
    annotation的理解
    Injection
  • 原文地址:https://www.cnblogs.com/zijidan/p/12535948.html
Copyright © 2020-2023  润新知