Software Engineering

Find Numbers with Even Number of Digits using Java


The challenge

Given an array nums of integers, return how many of them contain an even number of digits.

Example 1:

Input: nums = [12,345,2,6,7896]
Output: 2
Explanation: 
12 contains 2 digits (even number of digits). 
345 contains 3 digits (odd number of digits). 
2 contains 1 digit (odd number of digits). 
6 contains 1 digit (odd number of digits). 
7896 contains 4 digits (even number of digits). 
Therefore only 12 and 7896 contain an even number of digits.

Example 2:

Input: nums = [555,901,482,1771]
Output: 1 
Explanation: 
Only 1771 contains an even number of digits.

Constraints:

  • 1 <= nums.length <= 500
  • 1 <= nums[i] <= 10^5

The solution

class Solution {
    public int findNumbers(int[] nums) {
        // keep track of the amount to return
        int evens = 0;
        
        // loop through all the nums
        for (int i=0; i<nums.length; i++) {
            
            int digits = 0, num = nums[i];
            // while we divide by 10
            while (num!=0) {
                num /= 10;
                // increment our count
                ++digits;
            }
            
            // increment if even
            if (digits%2==0) evens++;
            
        }
        
        return evens;
    }
}