Back to all solutions
#1056 - Confusing Number
Problem Description
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.
Solution
/**
* @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;
};