1295. Find Numbers with Even Number of Digits
leetcode easy
Task
Дан массив чисел nums. Верните количество чисел в массиве, которые содержат четное количество цифр.
Пример:
Input: nums = [12,345,2,6,7896]
Output: 2
Explanation:
12 contains 2 digits (even number of digits).
345 contains 3 digits (odd number of digits).
2 contains 1 digit (odd number of digits).
6 contains 1 digit (odd number of digits).
7896 contains 4 digits (even number of digits).
Therefore only 12 and 7896 contain an even number of digits.
C# solution
matched/originalpublic class Solution {
private bool HasEvenDigits(int num) {
int digitCount = 0;
while (num > 0) {
digitCount++;
num /= 10;
}
return (digitCount & 1) == 0;
}
public int FindNumbers(int[] nums) {
int evenDigitCount = 0;
foreach (int num in nums) {
if (HasEvenDigits(num)) {
evenDigitCount++;
}
}
return evenDigitCount;
}
}C++ solution
auto-draft, review before submit#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
private bool HasEvenDigits(int num) {
int digitCount = 0;
while (num > 0) {
digitCount++;
num /= 10;
}
return (digitCount & 1) == 0;
}
public int FindNumbers(vector<int>& nums) {
int evenDigitCount = 0;
foreach (int num in nums) {
if (HasEvenDigits(num)) {
evenDigitCount++;
}
}
return evenDigitCount;
}
}Java solution
matched/originalclass Solution {
private boolean hasEvenDigits(int num) {
int digitCount = 0;
while (num > 0) {
digitCount++;
num /= 10;
}
return (digitCount & 1) == 0;
}
public int findNumbers(int[] nums) {
int evenDigitCount = 0;
for (int num : nums) {
if (hasEvenDigits(num)) {
evenDigitCount++;
}
}
return evenDigitCount;
}
}JavaScript solution
matched/originalclass Solution {
hasEvenDigits(num) {
let digitCount = 0
while (num > 0) {
digitCount++
num = Math.floor(num / 10)
}
return (digitCount & 1) === 0
}
findNumbers(nums) {
let evenDigitCount = 0
for (let num of nums) {
if (this.hasEvenDigits(num)) {
evenDigitCount++
}
}
return evenDigitCount
}
}Explanation
Algorithm
Определите вспомогательную функцию hasEvenDigits, которая принимает num в качестве входных данных и возвращает true, если количество цифр четное, иначе возвращает false.
Внутри функции hasEvenDigits. Инициализируйте переменную digitCount значением 0. Пока num не равно нулю: Увеличивайте digitCount на 1. Делите num на 10. Возвращайте digitCount & 1 == 0.
В функции findNumbers. Инициализируйте переменную evenDigitCount значением 0. Для каждого числа num в массиве nums, проверяйте, возвращает ли hasEvenDigits(num) значение true. Если да, увеличивайте evenDigitCount на 1. Возвращайте evenDigitCount.
😎