【数组相关】1295. 统计位数为偶数的数字

原题链接: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;
    }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值