LeetCode/Top Interview 150

290. Word Pattern

hyunkookim 2024. 11. 30. 17:59

290. Word Pattern

 

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