Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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
  }
}