문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
pattern과 문자열 s가 주어졌을 때, s가 동일한 패턴을 따르는지 판별해라.
여기서 follow는 패턴의 문자와 s에 있는 비어 있지 않은 단어 사이에 일대일 대응이 존재하는 완전한 일치를 의미한다.
#1
Input: pattern = "abba", s = "dog cat cat dog"
Output: true
Explanation:
전단사 함수는 다음과 같이 설정할 수 있다.
- 'a' maps to "dog".
- 'b' maps to "cat".
#2
Input: pattern = "abba", s = "dog cat cat fish"
Output: false
#3
Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false
class Solution {
public boolean wordPattern(String pattern, String s) {
String[] patterns = pattern.split("");
String[] words = s.split(" ");
if(patterns.length != words.length) return false;
Map<String, String> seen = new HashMap<>();
for(int i = 0; i < pattern.length(); i++){
String p = patterns[i];
String w = words[i];
String keyP = "p_" + p;
String keyW = "w_" + w;
if(seen.containsKey(keyP) && !seen.get(keyP).equals(w)) return false;
if(seen.containsKey(keyW) && !seen.get(keyW).equals(p)) return false;
seen.put(keyP, w);
seen.put(keyW, p);
}
return true;
}
}