← Назад к вопросам

Посчитайте количество гласных в строке

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 считаются)
  • Пробелы и другие символы пропускаются
  • Граничные случаи: пустая строка, нет гласных
Посчитайте количество гласных в строке | PrepBro