Modèle de mot
Étant donné a patternet a string s, trouvez si ssuit le même modèle.
Ici , suivre signifie une correspondance complète, telle qu'il y a une bijection entre une lettre dans patternet un mot non vides dans .
Exemple 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
Comme nous savons que
"abba" -> "chien chat chat chien"
'a' -> "chien"
'b' -> "chat"
si nous rencontrons une carte avec une chaîne différente, nous pouvons dire que ce n'est pas un cas de test valide.
"abfa" -> "chien chat chien chien"
'a' -> "chien"
'b' -> "chat"
'f' -> "chien"
mais le chien est déjà assigné à a. Nous utilisons donc deux cartes, l'une fera la cartographie avec un -> chien et une autre carte fera la cartographie avec un chien -> a afin que nous sachions que le chien est déjà mappé avec un autre personnage.
Commençons le code
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'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































