面试题 16.18. 模式匹配

Medium

思路

显然使用递归来求解

尝试写一下代码,AC!

代码

python3

class Solution:
  def helper(self, pattern, value, match):
    if pattern == '' and value != '':
      return False
    if pattern == '' and value == '' :
      return True
    p = pattern[0]
    if match[p] != None:
      if value.startswith(match[p]):
        return self.helper(pattern[1:], value.replace(match[p], '', 1), match)
      else:
        return False
    for m in range(len(value) + 1):
      w = value[0:m]
      if match['a'] == w or match['b'] == w: #a或b已经匹配到了
        continue
      match[p] = w
      if (self.helper(pattern[1:], value.replace(match[p], '', 1), match)):
        return True
    
      match[p] = None
    return False

  def patternMatching(self, pattern: str, value: str) -> bool:
    return self.helper(pattern, value, {'a':None, 'b':None})