📜  查找偶数位数的数字 leetcode - Java (1)

📅  最后修改于: 2023-12-03 15:40:23.037000             🧑  作者: Mango

查找偶数位数的数字 - LeetCode

问题描述

给定一个整数数组nums,返回由所有偶数位数字组成的新数组。

如果各个数字不足偶数位,则该数字为0。

示例
示例1:
输入:nums = [1234,567,89,10]
输出:[4, 6, 0, 0]

解释:

  • 1234的第二位为2,是偶数。
  • 567的第一位是5,是奇数。
  • 89的第一位是8,是偶数。
  • 10的位数不足二位。
示例2:
输入:nums = [10, 22, 44, 6]
输出:[0, 2, 4, 6]

解释:

  • 10的位数不足二位。
  • 22的位数是二位数,其中第一位是2,是偶数。
  • 44的位数是二位数,其中第一位是4,是偶数。
  • 6的位数是一位数,结果是0。
提示
  • 1 <= nums.length <= 500
  • 1 <= nums[i] <= 10^5
解法
思路
  • 遍历数组nums中的所有数字。
  • 对于当前数字num,将其转化为字符串形式,判断字符串长度,如果是偶数,则判断字符串中每一位是否是偶数。如果当前数字num的位数不足偶数,则直接将当前数字的结果值置为0。如果是奇数,则将结果值置为0。
  • 返回结果数组。
代码实现
class Solution {
    public int[] findNumbers(int[] nums) {
        ArrayList<Integer> res = new ArrayList<Integer>();
        for(int num : nums){
            String numString = String.valueOf(num);
            int numLength = numString.length();
            if(numLength % 2 == 0){
                int flag = 0;
                for(int i=0; i<numLength; i++){
                    if(numString.charAt(i) % 2 == 1){
                        flag = 1;
                        break;
                    }
                }
                if(flag == 0){
                    res.add(num);
                }
            }
            else{
                res.add(0);
            }
        }
        int[] result = new int[res.size()];
        for(int i=0; i<res.size(); i++){
            result[i] = res.get(i);
        }
        return result;
    }
}
总结

本题主要考查的是字符串的操作。需要熟悉字符串转化为数字和数字转化为字符串的方法。需要注意的是,如果数字的位数不足偶数,则需要直接将当前数字的结果值置为0。