leetcode_1067
Given an integer d between 0 and 9, and two positive integers low and high as lower and upper bounds, respectively. Return the number of times that d occurs as a digit in all integers between low and high, including the bounds low and high.
Example 1:
Input: d = 1, low = 1, high = 13
Output: 6
Explanation:
The digit d=1 occurs 6 times in 1,10,11,12,13. Note that the digit d=1 occurs twice in the number 11.
Example 2:
Input: d = 3, low = 100, high = 250
Output: 35
Explanation:
The digit d=3 occurs 35 times in 103,113,123,130,131,...,238,239,243.Note:
0 <= d <= 9
1 <= low <= high <= 2×10^8
Solutions
math
This problem is a generalization of
problem 233.The method is the same as in
problem 233except for the case whendequals to0. Since the highest number can not be0, we need to remove these impossible cases.For example:
When counting the number of
0in the second lowest digit,n = 123.Following the rule in
problem 233, the number of 0 in this position is composed of two parts:The main part:
(223 / 100) * 10 = 20ie:01, 02, 03, ... 09 101, 102, 103 ... 109. It's clear that the first10numbers are invalid.The remainder part:
min(223 % 100 - 10 * 0 + 1, 10) = 10, ie:201 202 203 204 205 ... 209.Thus the deduced count offsets the count of invalid numbers in the main part.
Last updated
Was this helpful?