LeetCode 1056. Confusing Number

Post by ailswan Jan. 20, 2025

1056. Confusing Number

Problem Statement

link: LeetCode.cn LeetCode

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.

Example:

Input: n = 6 Output: true

Input: n = 89 Output: true

Input: n = 1 Output: flase

Solution Approach

Algorithm

Implement

    class Solution {
    public boolean confusingNumber(int n) {
        HashMap<Integer, Integer> rotationMap = new HashMap<>();
        rotationMap.put(0, 0);
        rotationMap.put(1, 1);
        rotationMap.put(6, 9);
        rotationMap.put(8, 8);
        rotationMap.put(9, 6);

        int after = 0;
        int origin = n;

        while (n != 0) {
            int num = n % 10;
            if (!rotationMap.containsKey(num)) {
                return false;
            }
            num = rotationMap.get(num);
            after = after * 10 + num;
            n /= 10;
        }

        if (origin == after) {
            return false;
        }
        return true;
        
    }
}