首页 > 试题广场 >

通配符匹配

[编程题]通配符匹配
  • 热度指数:27361 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请实现支持'?'and'*'.的通配符模式匹配
'?' 可以匹配任何单个字符。
'*' 可以匹配任何字符序列(包括空序列)。
返回两个字符串是否匹配
函数声明为:
bool isMatch(string s,string p)
下面给出一些样例:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "*") → true
isMatch("aa", "a*") → true
isMatch("ab", "?*") → true
isMatch("aab", "d*a*b") → false
数据范围:字符串长度满足
进阶:空间复杂度 ,时间复杂度
示例1

输入

"ab","?*"

输出

true
示例2

输入

"ab","*"

输出

true
投机取巧🤭
class Solution:
    def isMatch(self , s: str, p: str) -> bool:
        # write code here
        import re
        r = re.findall('\*\*+', p)
        for i in r:
            p = p.replace(i, "*")
        p = p.replace("?", ".")
        p = p.replace("*", ".*")
        res = re.findall(p, s)
        if s in res:
            return True
        return False


发表于 2021-12-29 14:56:00 回复(0)