LeetCode - 2 : palindrome number

Junho Yun·2024년 3월 17일
post-thumbnail

Q.

A.

follow up 에 string으로 바꾸지 말라했지만...Arr로 바꿔주려고 무시

/**
 * @param {number} x
 * @return {boolean}
 */
var isPalindrome = function (x) {
    const reverseNums = +x.toString().split("").reverse().join("")

    return x === reverseNums && true
};

More

toString을 안하고 풀 수 있나 구경 중...발견한 코드

var isPalindrome = function(x) {
    var reverse = 0;
    var copy = x;

    //The loop break when the copy of original number becomes zero
    //Also negative number cannot be a palindrome
    while (copy > 0) {
      const digit = copy % 10;
      reverse = reverse * 10 + digit;
      copy = ~~(copy / 10);
    }

    return reverse == x;
};

좀 복잡해서...해설 첨부 (우와 똑똑하다...)

original number: 543
reverse number: 0

//Get the last digit of the original number
original % 10 = 543 % 10 = 3
//Put this digit as the last one in the reverse number
reverse * 10 + digit = 0 * 10 + 3 = 0 + 3 = 3
reverse: 3
//Remove this digit from the original number
original / 10 = 543 / 10 = 54.3
~~54.3 = 54
original: 54

//Repeat
original % 10 = 54 % 10 = 4
reverse * 10 + digit = 3 * 10 + 4 = 30 + 4 = 34
reverse: 34
original / 10 = 54 / 10 = 5.4
~~5.4 = 5
original: 5

//Repeat
original % 10 = 5 % 10 = 5
reverse * 10 + digit = 34 * 10 + 5 = 340 + 5 = 345
reverse: 345
original / 10 = 5 / 10 = 0.5
~~0.5 = 0
original: 0

input: 543
output: 345
profile
의미 없는 코드는 없다.

0개의 댓글