#1056
Easy Algorithms Confusing number
Math
49.3% acceptance
Mar 31, 2026
332
185
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
Rust
Time O(n)
Space O(1)
impl Solution {
pub fn confusing_number(n: i32) -> bool {
let rotate: [i32; 10] = [0, 1, -1, -1, -1, -1, 9, -1, 8, 6];
let mut rotated = 0i32;
let mut tmp = n;
while tmp > 0 {
let d = tmp % 10;
if rotate[d as usize] == -1 { return false; }
rotated = rotated * 10 + rotate[d as usize];
tmp /= 10;
}
rotated != n
}
}