anagrams

problem

๋‘ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‘ ๋ฌธ์ž์—ด์ด ์„œ๋กœ ์• ๋„ˆ๊ทธ๋žจ์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ

solution

function anagrams(stringA, stringB) {
    const aCharMap = buildCharMap(stringA)
    const bCharMap = buildCharMap(stringB)

    if (Object.keys(aCharMap).length !== Object.keys(bCharMap).length) {
        return false
    }

    for (let char in aCharMap) {
        if (aCharMap[char] !== bCharMap[char]) {
            return false;
        }
    }

    return true;
}

function buildCharMap(str) {
    const charMap = {};

    for (let char of str.replace(/[^\w]/g, '').toLowerCase()) {
        charMap[char] = charMap[char] + 1 || 1
    }
}

Description

  • ๋ฌธ์ž์—ด์„ ๊ฐ์ฒด key๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ ํ›„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•

  • str.replace(/[^\w]/g, '').toLowerCase().split('').sort().join('')

  • ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์—์„œ ์•ŒํŒŒ๋ฒณ๋งŒ ๋‚จ๊ธฐ๊ณ  ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ •๋ ฌํ•˜์—ฌ ๋น„๊ต

Last updated