1056. Confusing Number
Easy
Given a number N
, return true
if and only if it is a confusing number, which satisfies the following condition:
We can rotate digits by 180 degrees to form new digits. When 0, 1, 6, 8, 9 are rotated 180 degrees, they become 0, 1, 9, 8, 6 respectively. When 2, 3, 4, 5 and 7 are rotated 180 degrees, they become invalid. A confusing number is a number that when rotated 180 degrees becomes a different number with each digit valid.
Example 1:
Input: 6 Output: true Explanation: We get9
after rotating6
,9
is a valid number and9!=6
.
Example 2:
Input: 89 Output: true Explanation: We get68
after rotating89
,86
is a valid number and86!=89
.
Example 3:
Input: 11 Output: false Explanation: We get11
after rotating11
,11
is a valid number but the value remains the same, thus11
is not a confusing number.
Example 4:
Input: 25
Output: false
Explanation:
We get an invalid number after rotating 25
.
Note:
0 <= N <= 10^9
- After the rotation we can ignore leading zeros, for example if after rotation we have
0008
then this number is considered as just8
.
class Solution { Map<Integer, Integer> map = new HashMap<>(); public boolean confusingNumber(int N) { map.put(0,0); map.put(1,1); map.put(6,9); map.put(8,8); map.put(9,6); int t = N; int r = 0; while(t>0){ int v = t%10; t = t/10; if(!map.containsKey(v)) return false; int u = map.get(v); r = r*10+u; } return r!=N; } }
No comments:
Post a Comment