단어 패턴
Jan 01 2023
오늘의 Leetcode 문제 [ 2023년 1월 1일 ]
패턴과 문자열 s가 주어지면 s가 동일한 패턴을 따르는지 확인합니다. 여기서 팔로우는 패턴의 문자와 s의 비어 있지 않은 단어 사이에 전단사가 있는 완전 일치를 의미합니다.
patterna 및 문자열 이 주어지면 동일한 패턴을 따르는지 s찾습니다 .s
여기서 팔로우pattern 는 문자 in 과 비어 있지 않은 단어 사이에 전단사가 있는 완전 일치를 의미합니다 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' -> "개"
'b' -> "고양이"
문자열이 다른 맵을 만나면 유효한 테스트 케이스가 아니라고 말할 수 있습니다.
"압파" -> "개 고양이 개 개"
'a' -> "개"
'b' -> "고양이"
'f' -> "개"
그러나 개는 이미 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)



































