Образец слова
Jan 01 2023
Проблема дня Leetcode [ 01 января 2023 ]
Учитывая шаблон и строку s, найти, следует ли s тому же шаблону. Здесь follow означает полное совпадение, такое, что существует биекция между буквой в шаблоне и непустым словом в s.
Учитывая a patternи строку s, найдите, sследует ли одному и тому же шаблону.
Здесь follow означает полное совпадение, такое, что существует биекция между буквой в patternи непустым словом в s.
Пример 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
Как мы знаем, что
«абба» -> «собака кошка кошка собака»
'а' -> «собака»
'б' -> «кошка»
если мы встретим карту с другой строкой, мы можем сказать, что это недопустимый тестовый пример.
«абфа» -> «собака-кошка-собака»
'а' -> «собака»
'б' -> «кошка»
'ф' -> "собака"
но собака уже закреплена за a. Таким образом, мы используем две карты: одна будет делать сопоставление с собакой ->, а другая — с собакой -> a, чтобы мы знали, что собака уже сопоставлена с другим персонажем.
Давайте начнем код
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;
}
}

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































