class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
# 문자열 s를 공백(" ") 기준으로 나누어 단어 리스트로 변환
s = s.split(" ")
# pattern과 s의 길이가 다르거나 둘 중 하나가 비어있으면 False 반환
if len(pattern) != len(s) or len(pattern) == 0 or len(s) == 0:
return False
# pattern -> 단어 매핑과 단어 -> pattern 매핑을 추적하기 위한 딕셔너리
mapPatternS, mapSpattern = {}, {}
# pattern과 s의 각 문자를 순회하며 매핑 확인
for i in range(len(pattern)):
c1, c2 = pattern[i], s[i] # 현재 패턴 문자와 s의 단어 가져오기
# 현재 패턴 문자 c1이 이미 매핑되어 있는 경우, 매핑된 단어와 현재 단어가 다르면 False
if c1 in mapPatternS and mapPatternS[c1] != c2:
return False
# 현재 단어 c2가 이미 매핑되어 있는 경우, 매핑된 패턴 문자와 현재 패턴 문자가 다르면 False
if c2 in mapSpattern and mapSpattern[c2] != c1:
return False
# 현재 패턴 문자와 단어를 서로 매핑
mapPatternS[c1] = c2
mapSpattern[c2] = c1
# 모든 조건을 만족하면 True 반환
return True
https://youtu.be/W_akoecmCbM?si=iPEg4LtNACubTTYZ
'LeetCode > Top Interview 150' 카테고리의 다른 글
202. Happy Number (0) | 2024.12.01 |
---|---|
Hashmap: 1. Two Sum ★ (1) | 2024.12.01 |
205. Isomorphic Strings (1) | 2024.11.30 |
383. Ransom Note (0) | 2024.11.30 |
48. Rotate Image (0) | 2024.11.30 |