「小白leetcode刷题之路🚀(二)」 Find Numbers with Even Number of Digits

232 阅读1分钟

给定一个nums的整数数组,返回其中包含偶数位数字的个数。

事例:

输入: nums = [12,345,2,6,7896]
输出: 2
解释: 
12由两个数字组成(偶数位)
345由三个数字组成(奇数位)
2由一个数字组成(奇数位)
6由一个数字组成(奇数位)
7896由四个数字组成(偶数位)

注意⚠️:

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

leetCode传送门: leetcode.com/problems/fi…

好,看完题目要求后我们开始来解题,下面说说我的思路:

1、先写出计算位数的算法

 int numLength = 0;
 int num = 1234567;
  do {
      num = num / 10;
      numLength++;
  }while (num != 0); 
 
 output:7

注意:这里一定要用do-while语法,防止循环一开始个位数0参与不到运算

2、有了第一步的算法我们就可以对nums中的数字进行计算位数,我们可以用2对计算出来的位数进行取模,如果等于0就说明是偶数,接下来就可以对evenCount进行累加操作了。


解题如下:
class Solution {
    public int findNumbers(int[] nums) {
        int evenCount = 0;
        for (int num : nums) {
            int numLength = 0;
            do {
                num = num / 10 ;
                numLength++;
            }while (num != 0);

            if (numLength % 2 == 0){
                evenCount ++;
            }
        }
        return evenCount;
    }
}

3、放到leetcode编辑器执行下,success!!