Wortmuster
Wenn a patternund eine Zeichenfolge gegeben ssind, folgt find if sdem gleichen Muster.
Hier folgen bedeutet eine vollständige Übereinstimmung, so dass es eine Bijektion zwischen einem Buchstaben in patternund einem nicht leeren Wort in gibt s.
Beispiel 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
Wie wir das kennen
„abba“ -> „Hund Katze Katze Hund“
'a' -> "Hund"
'b' -> "Katze"
Wenn wir auf eine Map mit einer anderen Zeichenfolge stoßen, können wir sagen, dass es sich nicht um einen gültigen Testfall handelt.
„abfa“ -> „Hund Katze Hund Hund“
'a' -> "Hund"
'b' -> "Katze"
'f' -> "Hund"
aber der Hund ist bereits a zugeordnet. Also verwenden wir zwei Maps, eine macht Mapping mit einem -> Hund und eine andere Map macht Mapping mit Hund -> a, damit wir wissen, dass der Hund bereits mit einem anderen Charakter gemappt wird.
Beginnen wir mit dem 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;
}
}

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































