zoukankan      html  css  js  c++  java
  • 正则匹配

    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]
  • 相关阅读:
    Java Web(八) MVC和三层架构
    Java Web(九) 用户管理系统
    Java Web(十一) 分页功能的实现
    hibernate(四) 双向多对多映射关系
    合并两个排序的链表
    反转链表
    链表中倒数第k个结点
    堆排序
    计算机网络常见面试题
    字节对齐原则
  • 原文地址:https://www.cnblogs.com/zijidan/p/12535948.html
Copyright © 2011-2022 走看看