注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
第一题 尔酒灵 字母改数字
兩個部份。第二個部份需要backtrack
match_meta_pattern(metapattern: int[][], candidate: string) → boolean
[ [1], [1, 2] ], "dog cat" → true
[ [1, 2], [2], [1, 2] ]您好! 本帖隐藏的内容需要积分高于 188 才可浏览 您当前积分为 0。 使用VIP即刻解锁阅读权限或查看其他获取积分的方式 游客,您好! 本帖隐藏的内容需要积分高于 188 才可浏览 您当前积分为 0。 VIP即刻解锁阅读权限 或 查看其他获取积分的方式 "cat dog cat" → true
- def match_pattern(patterns: List[int], s: str) -> bool:
- pattern_to_word = {}
- words = s.split(' ')
- if len(patterns) != len(words):
- return False
- for i in range(len(patterns)):
- if patterns[i] in pattern_to_word:
- # if mapping exists with a different word, then return false
- if patterns[i]!=words[i]:
- return False
- else:
- # add entry
- pattern_to_word[patterns[i]] = words[i]
- return True
- def match_meta_pattern(patterns: List[List[int]], s: str) -> bool:
- words = s.split(' ')
- if len(patterns) != len(words):
- return False
- return helper(patterns, words, 0, defaultdict(str))
- # pattern_to_word is a dictionary map to set
- def helper(patterns, words, i_start, pattern_to_word):
- if i_start == len(patterns):
- return True
- # len of patterns = len of words
- for j in range(len(patterns[i_start])):
- word = words[i_start]
- pattern = patterns[i_start][j]
- if pattern in pattern_to_word and pattern_to_word[pattern] != word:
- continue
- # add entry
- pattern_to_word[pattern] = word
- # go to next check
- if helper(patterns, words, i_start+1, pattern_to_word):
- return True
- # del entry.........
- del pattern_to_word[pattern]
- return False
复制代码 |