Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
LeetCode 290. Patrones de palabras
Dado un patrón regular y una cuerda s, determina si s sigue el mismo patrón regular.
El cumplimiento aquí se refiere a una coincidencia completa. Por ejemplo, existe una correspondencia de conexión bidireccional entre cada letra del patrón y cada palabra no vacía en la cadena s.
Ejemplo 1:
Entrada: patrón = “abba”, s = “perro gato gato perro”
Salida: verdadero
Ejemplo 2:
Entrada: patrón = “abba”, s = “perro gato gato pez”
Salida: falso
Ejemplo 3:
Entrada: patrón = “aaaa”, s = “perro gato gato perro”
Salida: falso
pista:
1 <= longitud del patrón <= 300
el patrón contiene solo letras minúsculas en inglés
1 <= longitud s. <= 3000
s contiene sólo letras minúsculas en inglés y ' '
s no contiene ningún par de espacios iniciales o finales
Cada palabra en s está separada por un solo espacio.
Tabla hash, relación de biyección
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
length = len(pattern)
sub_strs = s.split()
if len(pattern) != len(sub_strs):
return False
d1, d2 = {}, {}
for i in range(length):
if pattern[i] in d1:
if d1[pattern[i]] != sub_strs[i]:
return False
if sub_strs[i] in d2:
if d2[sub_strs[i]] != pattern[i]:
return False
d1[pattern[i]] = sub_strs[i]
d2[sub_strs[i]] = pattern[i]
return True