[leetcode, JS] 290. Word Pattern

mxxn·2023년 8월 17일
0

leetcode

목록 보기
33/198

문제

문제 링크 : Word Pattern

실패한 풀이

/**
 * @param {string} pattern
 * @param {string} s
 * @return {boolean}
 */
var wordPattern = function(pattern, s) {
    const sSet = [... new Set(s.split(' '))]
    const patternSet = [... new Set(pattern.split(''))]
    return sSet.length === patternSet.length
};
  1. 중복된 것들을 제거하고 length비교하면 될 줄 알았음
  2. 반례) pattern = "aba", s = "cat cat cat dog"

풀이

/**
 * @param {string} pattern
 * @param {string} s
 * @return {boolean}
 */
var wordPattern = function(pattern, s) {
    
    const sArr = s.split(' ');
    if(pattern.length !== sArr.length) {
        return false
    }
    const patternMap = new Map();
    const sMap = new Map();
    
    for(let i=0; i<pattern.length; i++) {
        patternMap.set(pattern[i], i)
        sMap.set(sArr[i], i)
    }
    
    for(let i=0; i<pattern.length; i++) {
        if(patternMap.get(pattern[i]) !== sMap.get(sArr[i])) {
            return false
        }
    }

    return true
};
  1. Map 2개를 사용하여 key를 pattern[i], sArr[i]로 하고 value를 index로 하여 생성
  2. value값 비교하여 return
  • Runtime 41 ms, Memory 41.9 MB
profile
내일도 글쓰기

0개의 댓글