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.
Example 1:
Input: n = 6
Output: true
Explanation: We get 9 after rotating 6, 9 is a valid number, and 9 != 6.
Example 2:
Input: n = 89
Output: true
Explanation: We get 68 after rotating 89, 68 is a valid number and 68 != 89.
Example 3:
Input: n = 11
Output: false
Explanation: We get 11 after rotating 11, 11 is a valid number but the value remains the same, thus 11 is not a confusing number
Constraints:
Solutions#
Solution 1#
1
2
3
4
5
6
7
8
9
10
| class Solution:
def confusingNumber(self, n: int) -> bool:
x, y = n, 0
d = [0, 1, -1, -1, -1, -1, 9, -1, 8, 6]
while x:
x, v = divmod(x, 10)
if d[v] < 0:
return False
y = y * 10 + d[v]
return y != n
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| class Solution {
public boolean confusingNumber(int n) {
int[] d = new int[] {0, 1, -1, -1, -1, -1, 9, -1, 8, 6};
int x = n, y = 0;
while (x > 0) {
int v = x % 10;
if (d[v] < 0) {
return false;
}
y = y * 10 + d[v];
x /= 10;
}
return y != n;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| class Solution {
public:
bool confusingNumber(int n) {
vector<int> d = {0, 1, -1, -1, -1, -1, 9, -1, 8, 6};
int x = n, y = 0;
while (x) {
int v = x % 10;
if (d[v] < 0) {
return false;
}
y = y * 10 + d[v];
x /= 10;
}
return y != n;
}
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
| func confusingNumber(n int) bool {
d := []int{0, 1, -1, -1, -1, -1, 9, -1, 8, 6}
x, y := n, 0
for x > 0 {
v := x % 10
if d[v] < 0 {
return false
}
y = y*10 + d[v]
x /= 10
}
return y != n
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| class Solution {
/**
* @param Integer $n
* @return Boolean
*/
function confusingNumber($n) {
$d = [0, 1, -1, -1, -1, -1, 9, -1, 8, 6];
$x = $n;
$y = 0;
while ($x > 0) {
$v = $x % 10;
if ($d[$v] < 0) {
return false;
}
$y = $y * 10 + $d[$v];
$x = intval($x / 10);
}
return $y != $n;
}
}
|