DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

1 1

Wildcard Matching

Given an input string (s) and a pattern (p), implement wildcard pattern matching with support for '?' and '*' where:

  • '?' Matches any single character.
  • '*' Matches any sequence of characters (including the empty sequence).

The matching should cover the entire input string (not partial).

Example 1:

Input: s = "aa", p = "a"
Output: false
Explanation: "a" does not match the entire string "aa".

Example 2:

Input: s = "aa", p = "*"
Output: true
Explanation: '*' matches any sequence.

Example 3:

Input: s = "cb", p = "?a"
Output: false
Explanation: '?' matches 'c', but the second letter is 'a', which does not match 'b'.

Constraints:

  • 0 <= s.length, p.length <= 2000
  • s contains only lowercase English letters.
  • p contains only lowercase English letters, '?' or '*'.

SOLUTION:

class Solution:
    def isSame(self, a, b):
        if a == "?" or b == "?":
            return True
        return a == b

    def isMatchRec(self, s, p, i, j, m, n):
        if j >= n:
            return i >= m
        if i >= m:
            if j >= n:
                return True
        if (i, j) in self.cache:
            return self.cache[(i, j)]
        if i >= m:    
            res = p[j] == "*" and self.isMatchRec(s, p, i, j + 1, m, n)
            self.cache[(i, j)] = res
            return res
        if p[j] == "*":
            res = self.isMatchRec(s, p, i, j + 1, m, n) or self.isMatchRec(s, p, i + 1, j, m, n)
            self.cache[(i, j)] = res
            return res
        res = self.isSame(s[i], p[j]) and self.isMatchRec(s, p, i + 1, j + 1, m, n)
        self.cache[(i, j)] = res
        return res

    def isMatch(self, s: str, p: str) -> bool:
        m = len(s)
        n = len(p)
        self.cache = {}
        return self.isMatchRec(s, p, 0, 0, m, n)
Enter fullscreen mode Exit fullscreen mode

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay