diff --git a/LeetCode/Problems/Python/Wildcard Matching/Wildcard Matching.py b/LeetCode/Problems/Python/Wildcard Matching/Wildcard Matching.py new file mode 100644 index 00000000..5580c44b --- /dev/null +++ b/LeetCode/Problems/Python/Wildcard Matching/Wildcard Matching.py @@ -0,0 +1,16 @@ +class Solution: + def isMatch(self, s, p): + dp = [[False for _ in range(len(p)+1)] for i in range(len(s)+1)] + dp[0][0] = True + for j in range(1, len(p)+1): + if p[j-1] != '*': + break + dp[0][j] = True + + for i in range(1, len(s)+1): + for j in range(1, len(p)+1): + if p[j-1] in {s[i-1], '?'}: + dp[i][j] = dp[i-1][j-1] + elif p[j-1] == '*': + dp[i][j] = dp[i-1][j-1] or dp[i-1][j] or dp[i][j-1] + return dp[-1][-1]