Word Pattern
Dado un string “patrón” y un string “s”, encontrar si s cumple el patrón dado. Ejemplo:
pattern = “abba”, s = “dog cat cat dog”
Solución
class Solution(object):
def wordPattern(self, pattern, s):
"""
:type pattern: str
:type s: str
:rtype: bool
"""
d = {}
pat_idx = 0
s_idx = 0
pat_l = len(pattern)
s = s.split()
s_l = len(s)
if pat_l != s_l: return False
while pat_idx < pat_l and s_idx < s_l :
c = pattern[pat_idx]
pat_idx+=1
w = s[s_idx]
s_idx +=1
if c in d.keys():
old_word=d[c]
if old_word != w:
return False
else:
if w in d.values(): return False
d[c]=w
return True
Este problema guarda cada palabra y la asocia con su equivalente en el patrón. Si la palabra ya se encuentra con otra letra, entonces no es válido; así como si el equivalente en el patrón no coincide con la letra ya guardada, entonces tampoco sigue el patrón.