Leetcode 44 Solution
This article provides solution to leetcode question 44 (wildcard-matching)
Access this page by simply typing in "lcs 44" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/wildcard-matching
Solution
class Solution:
def isMatch(self, s: str, p: str) -> bool:
memo = {}
def match(s, p, i, j):
key = (i, j)
if key in memo:
return memo[key]
if i == len(s) and j == len(p):
return True
def check(s, p, i, j):
while i < len(s):
if j == len(p):
return False
if p[j] == '*':
while j + 1 < len(p) and p[j + 1] == '*':
j += 1
k = i
while k <= len(s):
if match(s, p, k, j + 1):
return True
k += 1
return False
if p[j] == '?':
return match(s, p, i + 1, j + 1)
if i == len(s) or j == len(p):
return False
if s[i] == p[j]:
i += 1
j += 1
else:
return False
for k in range(j, len(p)):
if p[k] != '*':
return False
return True
memo[key] = check(s, p, i, j)
return memo[key]
return match(s, p, 0, 0)