Leetcode [Easy] 7 - Reverse Integer
LeetCode 7
Reverse Integer
문제
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123
Output: 321
Example 2:
Input: -123
Output: -321
Example 3:
Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
나의 코드
function reverse(x: number): number {
const parsed: string = x.toString();
const array: string[] = parsed.split("");
let left: number = array[0] === "-" ? 1 : 0;
let right: number = array.length - 1;
let temp: string;
while (left < right) {
temp = array[left];
array[left] = array[right];
array[right] = temp;
left++;
right--;
}
const answer: number = Number(array.join(""));
if (Math.pow(-2, 31) > answer || answer >= Math.pow(2, 31) - 1) return 0;
else return answer;
}
참고 코드
var reverse = function (x) {
const reversed =
parseInt(Math.abs(x).toString().split("").reverse().join("")) *
Math.sign(x);
return reversed <= 0x7fffffff && reversed >= -0x80000000 ? reversed : 0;
};
배운점
2^31
은 2진법으로 1
과 0
31 개로 이루어진 수이다. (10^6
이 1 과
0` 6개로 이루어진 것 생각하면 됨)
4 bit 씩 나누면 16진수가 된다. => 2^31
= 0x80000000
(0x
는 16 진수 표현법 > 링크)
1을 빼면 0x7fffffff
Subscribe via RSS