zoukankan      html  css  js  c++  java
  • 788. 旋转数字『简单』

    题目来源于力扣(LeetCode

    一、题目

    788. 旋转数字

    题目相关标签:字符串

    说明:

    • N 的取值范围是 [1, 10000]

    二、解题思路

    1. 遍历 1 ~ N 的数字

    2. 判断所遍历数字的每一位是否符合要求,符合则将结果 + 1

      要求:

      • 数字的每一位都不为 3,4 ,7

      • 数字的位中必定有一位 2,5,6,9;使该数字旋转后能得到不同的数字

    三、代码实现

    public static int rotatedDigits(int N) {
        int ans = 0;
        // 遍历元素,范围从 1 ~ N
        for (int i = 1; i <= N; i++) {
            int k = i;
            // 变量 flag 记录是否可以旋转数字后与 k 不同
            boolean flag = false;
    
            // 对数字 k 的每一位进行判断
            while (k > 0) {
                // 取数字的末位
                int n = k % 10;
                // 4 个数中最少出现 1 次,即可旋转成不同的数字
                if (n == 2 || n == 5 || n == 6 || n == 9) {
                    flag = true;
                }
                // 3 个数中任一出现一个就会旋转成无效数字
                if (n == 3 || n == 7 || n == 4) {
                    break;
                }
                k /= 10;
            }
            // k 能够被除尽且可以翻转成不同的数字时,个数加 1
            if (k == 0 && flag) {
                ans += 1;
            }
        }
        return ans;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        int num = 10;  // output:4  {2, 5, 6, 9}
        int num = 20;  // output:8  {2, 5, 6, 9, 12, 15, 16, 19, 20}
        int result = rotatedDigits(num);
        System.out.println(result);
    }
    
  • 相关阅读:
    10-3 集合之Set
    【Angular】排序
    【Mongous】
    【验证码】
    爬虫
    【DOM】
    年月日
    【Mocha】
    【Test】
    洛谷——P1823 音乐会的等待
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/12969417.html
Copyright © 2011-2022 走看看