原题说明
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 rotating25
.
解题思路
我们用哈希表保存每个可以翻转的字符翻转后对应的字符,然后对每一位数字进行翻转,检查翻转后的数字和原来的数字是否相等即可。
示例代码 (cpp)
1 | class Solution { |
示例代码 (java)
1 | class Solution { |
示例代码 (python)
1 | class Solution: |
复杂度分析
时间复杂度: O(N)
空间复杂度: O(1)
归纳总结
我们在Youtube上更新了视频讲解,欢迎关注!