【Java】力扣 - 刷题笔记 - 1295
【Java】力扣 - 刷题笔记 - 1295
每日一道题,提升一点点
题目介绍
1295. 统计位数为偶数的数字
给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。
示例 1:
输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数)
345 是 3 位数字(位数为奇数)
2 是 1 位数字(位数为奇数)
6 是 1 位数字 位数为奇数)
7896 是 4 位数字(位数为偶数)
因此只有 12 和 7896 是位数为偶数的数字
示例 2:
输入:nums = [555,901,482,1771]
输出:1
解释:
只有 1771 是位数为偶数的数字。
提示:
- 1 <= nums.length <= 500
- 1 <= nums[i] <= 105
解题思路
- 1.题目分析
我们先写一个方法判断一个数字位数的奇偶性
public static boolean isEven(int num) {
// 初始化数值位数为1位
int digit = 1;
// 求数值的位数
for (int i = 1; i <= 5; i++) {
// 如果num/10大于0,则位数加一,且num=num/10
if(num / 10 > 0) {
digit++;
} else {
break;
}
num = num / 10;
}
// 判断位数的奇偶性,偶数返回true,否则返回false
if (digit % 2 == 0) {
return true;
} else {
return false;
}
}
然后遍历nums数组,判断每个值的奇偶性,输出结果即可
class Solution {
public int findNumbers(int[] nums) {
// 初始化数组中位数为偶数的个数为0
int res = 0;
// 遍历数组,遇到位数为偶数时res加1
for (int i = 0; i < nums.length; i++) {
if (isEven(nums[i])) {
res++;
}
}
return res;
}
// 判断数字位数是否偶数,是则返回true
public static boolean isEven(int num) {
int digit = 1;
for (int i = 1; i <= 5; i++) {
if(num / 10 > 0) {
digit++;
} else {
break;
}
num = num / 10;
}
if (digit % 2 == 0) {
return true;
} else {
return false;
}
}
}
- 2.提交结果