patrón de palabras
Jan 01 2023
Leetcode Problema del día [ 1 de enero de 2023 ]
Dado un patrón y una cadena s, encuentre si s sigue el mismo patrón. Aquí seguir significa una coincidencia completa, de modo que hay una biyección entre una letra en patrón y una palabra no vacía en s.
Dado a patterny una cadena s, encuentra si ssigue el mismo patrón.
Aquí seguir significa una coincidencia completa, de modo que hay una biyección entre una letra en patterny una palabra no vacías en .
Ejemplo 1:
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
Como sabemos que
“abba” -> “perro gato gato perro”
'a' -> “perro”
'b' -> "gato"
si encontramos un mapa con una cadena diferente, podemos decir que no es un caso de prueba válido.
“abfa” -> “perro gato perro perro”
'a' -> “perro”
'b' -> "gato"
'f' -> “perro”
pero el perro ya está asignado a a. Entonces, usamos dos mapas, uno hará el mapeo con un -> perro y otro mapa hará el mapeo con perro -> a para que sepamos que el perro ya está siendo mapeado con otro personaje.
Comencemos el código
class Solution {
public boolean wordPattern(String pattern, String s) {
String[] tokens = s.split(" ");
if(pattern.length() != tokens.length)
return false;
HashMap<String, Character> map = new HashMap<>();
HashMap<Character, String> reverseMap = new HashMap<>();
for(int i=0;i<tokens.length;i++) {
String find = tokens[i];
char pt = pattern.charAt(i);
if(!map.containsKey(find))
map.put(find, pt);
if(!reverseMap.containsKey(pt))
reverseMap.put(pt, find);
char mapPt = map.get(find);
String mapStr = reverseMap.get(pt);
if(mapPt != pt)
return false;
if(!mapStr.equals(find))
return false;
}
return true;
}
}

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































