Word Pattern

Word Pattern

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

-문제 내용

두개의 Array 문자열을 제공하고 상호 연관 관계를 갖는다.

 

- 접근 방법

'aba' 와 'dog cat dog'가 주어 진다면 a는 dog를 cat은 b를 뜻하게 된다. 두개의 array가 상호 관계를 갖음으로 2개의 Map을 만들고 하나는 'aba'를 키로 하는 map 또하나는 'dog cat dog'를 키로하는 map을 만든 후 양쪽 관계가 성립 되는지를 확인 하는 코드를 만들면 된다.

var wordPattern = function(pattern, str) {
    let map = new Map();
    let rMap = new Map();
    let pArr = pattern.split('');
    let sArr = str.split(' ');
    
    if(pArr.length != sArr.length) return false;
    
    for(let i = 0; i < pArr.length; i++){
        if(map.has(pArr[i])){
            if(map.get(pArr[i]) != sArr[i]) return false;
        } else {
            map.set(pArr[i], sArr[i]);
        }    
        
        if(rMap.has(sArr[i])){
            if(rMap.get(sArr[i]) != pArr[i]) return false;
        } else {
            rMap.set(sArr[i], pArr[i]);
        }    
    }
    return true;
};

 

- 복잡도

Time Complexity O(N) : length of pattern or str

Space Complexity O(N) : 비록 2개를 만들긴 하지만 선형적으로 증가하진 않음으로 N

728x90
반응형