zoukankan      html  css  js  c++  java
  • python每日活力练习Day29

    题目:通配符匹配

    给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。

    '?' 可以匹配任何单个字符。
    '*' 可以匹配任意字符串(包括空字符串)。
    

    两个字符串完全匹配才算匹配成功。

    说明:

    • s 可能为空,且只包含从 a-z 的小写字母。
    • p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *

    示例 1:

    输入:
    s = "aa"
    p = "a"
    输出: false
    解释: "a" 无法匹配 "aa" 整个字符串。

    示例 2:

    输入:
    s = "aa"
    p = "*"
    输出: true
    解释: '*' 可以匹配任意字符串。
    

    示例 3:

    输入:
    s = "cb"
    p = "?a"
    输出: false
    解释: '?' 可以匹配 'c', 但第二个 'a' 无法匹配 'b'。
    

    示例 4:

    输入:
    s = "adceb"
    p = "*a*b"
    输出: true
    解释: 第一个 '*' 可以匹配空字符串, 第二个 '*' 可以匹配字符串 "dce".
    

    示例 5:输入:

    s = "acdcb"
    p = "a*c?b"
    输出: false


    思路:
    https://leetcode-cn.com/problems/wildcard-matching/solution/yi-ge-qi-pan-kan-dong-dong-tai-gui-hua-dpsi-lu-by-/

    python代码
     1 def isMatch(s, p):
     2     # n,m分别为字符串s,p的长度
     3     n, m = len(s), len(p)
     4     # 初始化矩阵
     5     dis = [[False for _ in range(n + 1)] for __ in range(m + 1)]
     6     dis[0][0] = True
     7     # 匹配空字符串
     8     for i in range(m):
     9         if p[i] == "*":
    10             dis[i + 1][0] = dis[i][0]
    11 
    12     # 更一般的情况
    13     for i in range(m):
    14         for j in range(n):
    15             if (p[i] == s[j] or p[i] == "?"):
    16                 dis[i + 1][j + 1] = dis[i][j]
    17             elif p[i] == "*":
    18                 # 从同一列走下来,说明*可以匹配空字符串;从同一行左边走到右边,说明*可以匹配多个字符串
    19                 dis[i + 1][j + 1] = dis[i + 1][j] or dis[i][j+1]
    20 
    21     return dis[-1][-1]
    22 
    23 s = "a"
    24 p = "a*"
    25 print(isMatch(s,p))
    
    

    输出结果:True

    题目来源:https://leetcode-cn.com/problems/wildcard-matching/
  • 相关阅读:
    Python动态展示遗传算法求解TSP旅行商问题
    MOEAD算法中均匀权向量的实现---Python
    HDU 5294 多校第一场1007题 最短路+最小割
    POJ 3261 Milk Patterns sa+二分
    HDU 4292 FOOD 2012 ACM/ICPC Asia Regional Chengdu Online
    CodeForces 201A Clear Symmetry
    POJ 1679 The Unique MST 确定MST是否唯一
    POJ 3268 Silver Cow Party 最短路 基础题
    POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
    POJ2229 Sumsets 基礎DP
  • 原文地址:https://www.cnblogs.com/xiaodangdang/p/13257196.html
Copyright © 2011-2022 走看看