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 <= 1000
  • 1 <= nums[i] <= 106​​​​​​​
  • 0 <= 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;
    }
    
    

All Problems

All Solutions