mẫu từ
Cho a patternvà a string s, hãy tìm nếu stheo cùng một mẫu.
Ở đây, follow có nghĩa là khớp hoàn toàn, sao cho có sự trùng lặp giữa một chữ cái trong patternvà một từ không trống trong s.
Ví dụ 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
Như chúng ta biết rằng
“abba” -> “chó mèo mèo chó”
'a' -> “chó”
'b' -> “mèo”
nếu chúng ta gặp một bản đồ với một chuỗi khác thì chúng ta có thể nói rằng đó không phải là một trường hợp thử nghiệm hợp lệ.
“abfa” -> “chó mèo chó chó”
'a' -> “chó”
'b' -> “mèo”
'f' -> “chó”
nhưng con chó đã được gán cho a. Vì vậy, chúng tôi sử dụng hai bản đồ, một bản đồ sẽ thực hiện ánh xạ với -> con chó và một bản đồ khác sẽ thực hiện ánh xạ với con chó -> a để chúng tôi biết con chó đã được ánh xạ với một ký tự khác.
Hãy bắt đầu viết mã
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;
}
}

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































