面试题 17.06. 2出现的次数

编写一个方法,计算从 0 到 n (含 n) 中数字 2 出现的次数。

示例:

输入: 25
输出: 9
解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次)

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

import java.util.Scanner;

class Solution {
    public int numberOf2sInRange(int n) {
        return solve(n, 2);
    }

    private int solve(int n, int t) {
        long base = 1;
        int ans = 0;
        while (n >= base) {
            ans += n / (base * 10) * base + Math.min(base, Math.max(0, n % (base * 10) - t * base + 1));
            base *= 10;
        }
        return ans;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().numberOf2sInRange(in.nextInt()));
        }
    }
}

上一篇:Python12--标点符号


下一篇:剑指 Offer 10- I. 斐波那契数列