-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy path1056-confusing-number.js
More file actions
36 lines (33 loc) · 1.1 KB
/
1056-confusing-number.js
File metadata and controls
36 lines (33 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* 1056. Confusing Number
* https://leetcode.com/problems/confusing-number/
* Difficulty: Easy
*
* A confusing number is a number that when rotated 180 degrees becomes a different number with
* each digit valid.
*
* We can rotate digits of a number by 180 degrees to form new digits.
* - When 0, 1, 6, 8, and 9 are rotated 180 degrees, they become 0, 1, 9, 8, and 6 respectively.
* - When 2, 3, 4, 5, and 7 are rotated 180 degrees, they become invalid.
*
* Note that after rotating a number, we can ignore leading zeros.
* - For example, after rotating 8000, we have 0008 which is considered as just 8.
*
* Given an integer n, return true if it is a confusing number, or false otherwise.
*/
/**
* @param {number} n
* @return {boolean}
*/
var confusingNumber = function(n) {
const rotationMap = { '0': '0', '1': '1', '6': '9', '8': '8', '9': '6' };
const digits = n.toString();
let rotated = '';
for (let i = digits.length - 1; i >= 0; i--) {
if (!(digits[i] in rotationMap)) {
return false;
}
rotated += rotationMap[digits[i]];
}
return parseInt(rotated, 10) !== n;
};