Algorithm 查找位数为偶数的数字?

Algorithm 查找位数为偶数的数字?,algorithm,data-structures,Algorithm,Data Structures,给定一个整数数组,返回其中有多少个包含偶数位数。 int[]nums=newint[]{17340,2,67896890989,0,90} o/p-4。您需要使用String.valueOf函数将每个数字解析为一个字符串,并检查其长度是否为偶数: 通过将整数转换为字符串来计算整数中的数字肯定会起作用。但是,由于您只想知道位数是偶数还是奇数,因此将其保持为整数并反复除以100可能会更快,直到得到一个包含1或2位数的结果: 布尔有偶数个无符号整数n{ 而n>=100{ n/=100; } 返回n>9

给定一个整数数组,返回其中有多少个包含偶数位数。 int[]nums=newint[]{17340,2,67896890989,0,90}


o/p-4。

您需要使用String.valueOf函数将每个数字解析为一个字符串,并检查其长度是否为偶数:


通过将整数转换为字符串来计算整数中的数字肯定会起作用。但是,由于您只想知道位数是偶数还是奇数,因此将其保持为整数并反复除以100可能会更快,直到得到一个包含1或2位数的结果:

布尔有偶数个无符号整数n{ 而n>=100{ n/=100; } 返回n>9; }
您无需转换为字符串即可执行此操作。h有一个函数log10,它接受输入的logbase 10。这是你必须提高10才能得到x的指数

对于像100或1000这样的数字很简单:log10100==2,log101000==3。对于不是10的指数的数字,它将是介于之间的某个值。例如,log10500log10100。但是如果您将结果强制转换为整数,它将向下取整,intlog500==2。将该值加1,就有了数字长度计数器

所以整个函数看起来像这样:

#include <math.h>
int num_even_digits(int[] digits, int digits_len) {
    int count = 0;

    for (int i=0; i<digits_len; i++) {
        int num_len = log10(digits[i])+1;
        count = count + (int) (num_len % 2 == 0);

    return count;
但请注意,这假设所有数字的值都大于0。如果不是,则需要在运行log10之前添加一个检查以将负数乘以-1,并将0指定为长度1 log0为负无穷大,这将使编译器感到悲伤

请重新执行,读取并提供一个。为我实现这一功能在这里是离题的。你必须做出诚实的尝试,然后就你的算法或技术提出一个具体的问题;在数组上的循环中确定数字的长度。如果len\u of_num%2==0,则只需增加计数器。注意,如果x
class EvenNumbers {
    public int evenNumbers(int[] nums) {
       
        int count=0;
        String obj = null;
        
        for(int i=0; i<nums.length; i++)
        {
          obj= Integer.toString(nums[i]);
            System.out.println(obj.length());
           
            if(((obj.length())%2)==0)
            {
                 System.out.println("inside if");
                count++;
            }
        }
        return count;   
    }
}     
#include <math.h>
int num_even_digits(int[] digits, int digits_len) {
    int count = 0;

    for (int i=0; i<digits_len; i++) {
        int num_len = log10(digits[i])+1;
        count = count + (int) (num_len % 2 == 0);

    return count;
class EvenNumbers {
    public int evenNumbers(int[] nums) {
       
        int count=0;
        String obj = null;
        
        for(int i=0; i<nums.length; i++)
        {
          obj= Integer.toString(nums[i]);
            System.out.println(obj.length());
           
            if(((obj.length())%2)==0)
            {
                 System.out.println("inside if");
                count++;
            }
        }
        return count;   
    }
}