题目描述:
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 get 9 after rotating 6, 9 is a valid number and 9!=6.
Example 2:
Input: 89 Output: true Explanation: We get 68 after rotating 89, 86 is a valid number and 86!=89.
Example 3:
Input: 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.
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
0008then this number is considered as just8.
class Solution {
public:
bool confusingNumber(int N) {
int M=N;
int n=0;
while(M>0)
{
int x=M%10;
n*=10;
M/=10;
if(x==0||x==1||x==8) n+=x;
else if(x==6) n+=9;
else if(x==9) n+=6;
else return false;
}
return n!=N;
}
};
1218

被折叠的 条评论
为什么被折叠?



