Algorithm 查找位数为偶数的数字?
给定一个整数数组,返回其中有多少个包含偶数位数。 int[]nums=newint[]{17340,2,67896890989,0,90}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
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的指数的数字,它将是介于之间的某个值。例如,log10500
#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;
}
}