LeetCode 1056. 易混淆数(哈希)

    技术2023-07-22  70

    文章目录

    1. 题目2. 解题

    1. 题目

    给定一个数字 N,当它满足以下条件的时候返回 true:

    原数字旋转 180° 以后可以得到新的数字。

    如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。

    2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。

    易混淆数 (confusing number) 在旋转180°以后,可以得到和原来不同的数,且新数字的每一位都是有效的。

    示例 1: 输入:6 输出:true 解释: 把 6 旋转 180° 以后得到 99 是有效数字且 9!=6 。 示例 2: 输入:89 输出:true 解释:89 旋转 180° 以后得到 6886 是有效数字且 86!=89 。 示例 3: 输入:11 输出:false 解释: 把 11 旋转 180° 以后得到 1111 是有效数字但是值保持不变,所以 11 不是易混淆数字。 示例 4: 输入:25 输出:false 解释: 把 25 旋转 180° 以后得到的不是数字。 提示: 0 <= N <= 10^9 可以忽略掉旋转后得到的前导零 例如,如果我们旋转后得到 0008 那么该数字就是 8

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/confusing-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    2. 解题

    类似题目:LeetCode 246. 中心对称数(哈希)

    将数字转成字符串,依次判断各位 class Solution { public: bool confusingNumber(int N) { string num = to_string(N); unordered_map<char,char> m = {{'6','9'},{'9','6'},{'8','8'},{'1','1'},{'0','0'}}; string rotate; for(char ch : num) { if(!m.count(ch)) return false; rotate = m[ch]+rotate; } return stoi(rotate,0,10)!=N; } };

    4 ms 6.1 MB


    长按或扫码关注我的公众号,一起加油、一起学习进步!

    Processed: 0.009, SQL: 9