原题链接:https://leetcode-cn.com/problems/find-numbers-with-even-number-of-digits/
此题唯一的难点在于计算数组当中每个数字的长度
如果借助String解题的话,会更加方便一点,将数组中的每个数据nums[i]拼接上一个空串""
String s=nums[i]+"";
紧接着获取s的长度即可得到数字的长度
s.length();
解题步骤:
1.遍历数组中每个数字
2.将每个数字都拼接一个空串""
3.获取拼接后字符串的长度,判断长度是否为偶数即可并计数一次
class Solution {
public int findNumbers(int[] nums) {
int count=0;
for(int i=0;i<nums.length;i++){
if((nums[i]+"").length()%2==0){
count++;
}
}
return count;
}
}
按照上述解法是能够通过的,只不过相对而言效率比较低下
我们也可以直接利用题目中已知的一些提示来判断每个数字的范围即可
1 <= nums.length <= 500
1 <= nums[i] <= 10^5
第2个提示中表明了数字的范围,如果数字a的长度是偶数
那么只需判断它的范围即可
- 10<=a<100
- 1000<=a<10000
- a==100000
代码如下:
class Solution {
public int findNumbers(int[] nums) {
int i=0;
int count = 0;
while(i<nums.length){
if(nums[i]>=10&&nums[i]<100||nums[i]>=1000&&nums[i]<10000||nums[i]==100000){
count++;
}
i++;
}
return count;
}
}