[leetcode, JS] 2068. Check Whether Two Strings are Almost Equivalent

mxxn·2023년 12월 8일
0

leetcode

목록 보기
141/198

문제

문제 링크 : Check Whether Two Strings are Almost Equivalent

풀이

/**
 * @param {string} word1
 * @param {string} word2
 * @return {boolean}
 */
var checkAlmostEquivalent = function(word1, word2) {
    const word1Obj = {}
    const word2Obj = {}

    for(let i =0; i<word1.length; i++) {
        word1Obj[word1[i]] ? word1Obj[word1[i]] += 1 : word1Obj[word1[i]] = 1
        word2Obj[word2[i]] ? word2Obj[word2[i]] += 1 : word2Obj[word2[i]] = 1
    }

    for( let key in word1Obj ) {
        if(word2Obj[key]) {
            if(Math.abs(word1Obj[key] - word2Obj[key]) > 3) return false 
        } else {
           if(word1Obj[key] > 3 ) return false
        }
    }

    for( let key in word2Obj ) {
        if(word1Obj[key]) {
            if(Math.abs(word1Obj[key] - word2Obj[key]) > 3) return false 
        } else {
           if(word2Obj[key] > 3 ) return false
        }
    }

    return true
};
  1. 문자열 word1과 word2의 알바벳 카운팅 후
  2. 각각 obj에서 알파벳 카운팅 차이 비교하여 return
  • Runtime 64 ms, Memory 45.44 MB

다른 풀이

/**
 * @param {string} word1
 * @param {string} word2
 * @return {boolean}
 */
var checkAlmostEquivalent = function(word1, word2) {
    arr = new Array(26).fill(0);
    
    for (let i = 0; i < word1.length; i++) {
        arr[word1.charCodeAt(i)-97]++;
        arr[word2.charCodeAt(i)-97]--;
    }
    
    for (ar of arr) {
        if (ar > 3 || ar < -3) return false;
    }

    return true;
};
  1. 배열을 만들어 word1과 word2에서의 알파벳을 카운팅
  2. 알바벳 카운트 차이가 3보다 크면 return false
  • Runtime 54 ms, Memory 42.99 MB
profile
내일도 글쓰기

0개의 댓글