假设我们有一个字符串s和一个正则表达式模式。我们必须检查给定的模式是否与给定的字符串匹配。在正则表达式中,几乎没有规则-
。(句点)匹配任何单个字符
*(星号),它与零个或多个前一个元素匹配。
因此,如果输入类似于pattern =“ hl * o” s =“ hello”,则输出将为True,因为我们有ra然后是单个字符
让我们看下面的实现以更好地理解-
class Solution: def solve(self, p, s): n = len(s) m = len(p) def dp(i, j): if j == m: return i == n match = i < n and (s[i] == p[j] or p[j] == ".") if j + 1 < m and p[j + 1] == "*": return dp(i, j + 2) or (match and dp(i + 1, j)) return match and dp(i + 1, j + 1) return dp(0, 0) ob = Solution() pattern = "h.l*o" s = "hello" print(ob.solve(pattern, s))
"h.l*o", "hello"输出结果
True