유효한 숫자 아나그램

2개의 양의 정수가 주어지면 반복/비반복 요소의 수가 같은지 확인하는 함수를 작성하십시오.

생각:
  • 이 질문은 문자열 대신 숫자를 사용하므로 일부 JS 트릭을 사용하여 개별 숫자를 얻을 수 있습니다.
  • 먼저 문자열을 만들고 각 위치의 문자를 가져올 수 있습니다
  • .
  • 또는 수학 공식을 사용하여 동일한 결과를 얻을 수 있습니다
  • .

  • 수학적 방법은 다음과 같은 트릭을 사용합니다.
  • 더 어려운 솔루션이므로 동일한 수학 전술을 사용하여 연습합니다
  • .
  • Stringify 방법이 더 간단하지만 해결책으로 다른 언어로 번역하기 어렵습니다.

  • function getNumOfDigits(num) {
        if (num === 0) return 1;
        return Math.floor(Math.log10(num)) + 1;
    }
    function getDigitByPos(num, pos) {
        if (num === 0) return 0;
        return Math.floor(num / Math.pow(10, pos)) % 10;
    }
    
    function ValidNumericAnagram(numX, numY) {
        if (getNumOfDigits(numX) !== getNumOfDigits(numY)) return false;
    
        let digitCounter = {};
        let limit = getNumOfDigits(numX);
        for (let i=0; i<limit; i++) {
            const digit = getDigitByPos(numX, i);
            if (digitCounter[digit] === undefined) {
                digitCounter[digit] = 0
            }
            digitCounter[digit]++;
        }
    
        for (let i=0; i<limit; i++) {
            const digit = getDigitByPos(numY, i);
            if (digitCounter[digit] === undefined) {
                return false;
            }
            digitCounter[digit]--;
        }
    
        return true;
    }
    

    좋은 웹페이지 즐겨찾기