Welcome to Subscribe On Youtube
3895. Count Digit Appearances
Description
You are given an integer array nums and an integer digit.
Return the total number of times digit appears in the decimal representation of all elements in nums.
Example 1:
Input: nums = [12,54,32,22], digit = 2
Output: 4
Explanation:
The digit 2 appears once in 12 and 32, and twice in 22. Thus, the total number of times digit 2 appears is 4.
Example 2:
Input: nums = [1,34,7], digit = 9
Output: 0
Explanation:
The digit 9 does not appear in the decimal representation of any element in nums, so the total number of times digit 9 appears is 0.
Constraints:
1 <= nums.length <= 10001 <= nums[i] <= 1060 <= digit <= 9
Solutions
Solution 1: Simulation
We traverse each element in the array and count how many times $\textit{digit}$ appears. For each element, we can obtain each of its digits by repeatedly taking the modulo and dividing by 10, and compare each digit with $\textit{digit}$. If they are equal, we increment the answer by 1.
Finally, return the answer.
The time complexity is $O(n \times \log_{10} M)$, and the space complexity is $O(1)$. Here, $n$ and $M$ are the length of the array and the maximum value in the array, respectively.
-
class Solution { public int countDigitOccurrences(int[] nums, int digit) { int ans = 0; for (int x : nums) { for (; x > 0; x /= 10) { if (x % 10 == digit) { ++ans; } } } return ans; } } -
class Solution { public: int countDigitOccurrences(vector<int>& nums, int digit) { int ans = 0; for (int x : nums) { for (; x > 0; x /= 10) { if (x % 10 == digit) { ++ans; } } } return ans; } }; -
class Solution: def countDigitOccurrences(self, nums: list[int], digit: int) -> int: ans = 0 for x in nums: while x: v = x % 10 if v == digit: ans += 1 x //= 10 return ans -
func countDigitOccurrences(nums []int, digit int) (ans int) { for _, x := range nums { for ; x > 0; x /= 10 { if x%10 == digit { ans++ } } } return } -
function countDigitOccurrences(nums: number[], digit: number): number { let ans = 0; for (let x of nums) { for (; x; x = Math.floor(x / 10)) { if (x % 10 === digit) { ++ans; } } } return ans; }