A confusing number is a number that, when rotated 180 degrees, becomes a different number with each digit valid. We can rotate the 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.
https://leetcode.com/problems/confusing-number/description/
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 |
class Solution { public boolean confusingNumber(int n) { //Map of valid integers //Key would the integer itself //Value would be the integer they become when rotated 180 degrees Map<Integer, Integer> map = Map.of(0, 0, 1, 1, 6, 9, 8, 8, 9, 6); //since the range is 0 <= n <= 10^9 long newN = 0; long x = n; while(x!=0){ int c = (int)x%10; //if a integer is not a valid integer //then return false if(!map.containsKey(c)) return false; //if it is a valid integer //then get the rotated version of the integer //and add it to the existing new number newN newN = newN*10 + map.get(c); x = x/10; } return newN != n; } } |