Сложность: easy
Дан массив чисел 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.
👨💻 Алгоритм:
1⃣Определите вспомогательную функцию hasEvenDigits, которая принимает num в качестве входных данных и возвращает true, если количество цифр четное, иначе возвращает false.
2⃣Внутри функции hasEvenDigits. Инициализируйте переменную digitCount значением 0. Пока num не равно нулю: Увеличивайте digitCount на 1. Делите num на 10. Возвращайте digitCount & 1 == 0.
3⃣В функции findNumbers. Инициализируйте переменную evenDigitCount значением 0. Для каждого числа num в массиве nums, проверяйте, возвращает ли hasEvenDigits(num) значение true. Если да, увеличивайте evenDigitCount на 1. Возвращайте evenDigitCount.
😎 Решение:
class Solution {
func hasEvenDigits(_ num: Int) -> Bool {
var digitCount = 0
var num = num
while num > 0 {
digitCount += 1
num /= 10
}
return (digitCount & 1) == 0
}
func findNumbers(_ nums: [Int]) -> Int {
var evenDigitCount = 0
for num in nums {
if hasEvenDigits(num) {
evenDigitCount += 1
}
}
return evenDigitCount
}
}Ставь 👍 и забирай 📚 Базу знаний