← Назад к вопросам
Посчитайте количество гласных в строке
1.3 Junior🔥 61 комментариев
#Node.js и JavaScript#Алгоритмы и структуры данных
Условие
Напишите функцию countVowels(str), которая подсчитывает количество гласных (a, e, i, o, u) в строке:
function countVowels(str) {
// Ваш код
}
console.log(countVowels("Hello World")); // 3
console.log(countVowels("AEIOU")); // 5
console.log(countVowels("xyz")); // 0
console.log(countVowels("")); // 0
Что проверяется
- Работа со строками
- Регулярные выражения или циклы
- Регистронезависимый поиск
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Подход 1: С использованием регулярного выражения
function countVowels(str: string): number {
const matches = str.match(/[aeiou]/gi);
return matches ? matches.length : 0;
}
Как работает:
/[aeiou]/gi— ищет любую гласнуюgфлаг — все совпаденияiфлаг — регистронезависимыйmatch()возвращает массив или null
Подход 2: С использованием простого цикла
function countVowels(str: string): number {
const vowels = 'aeiouAEIOU';
let count = 0;
for (const char of str) {
if (vowels.includes(char)) {
count++;
}
}
return count;
}
Подход 3: С использованием filter
function countVowels(str: string): number {
return [...str].filter(char => /[aeiou]/i.test(char)).length;
}
Подход 4: С использованием Set
function countVowels(str: string): number {
const vowelSet = new Set('aeiouAEIOU');
let count = 0;
for (const char of str) {
if (vowelSet.has(char)) {
count++;
}
}
return count;
}
Примеры вывода
console.log(countVowels("Hello World")); // 3 (e, o, o)
console.log(countVowels("AEIOU")); // 5
console.log(countVowels("xyz")); // 0
console.log(countVowels("")); // 0
Анализ
Временная сложность: O(n) для всех подходов
Пространственная сложность: O(1) для цикла и Set, O(n) для match/filter
Какой использовать:
- Регулярное выражение: компактно, быстро
- Простой цикл: читаемо, эффективно
- Set: оптимально для больших наборов
- Filter: функциональный стиль
Ключевые моменты:
- Гласные только в английском: a, e, i, o, u
- Регистронезависимый поиск (A и a считаются)
- Пробелы и другие символы пропускаются
- Граничные случаи: пустая строка, нет гласных