Редакция для Подсчёт гласных в строке
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Автор:
1. Идея
Нужно посчитать, сколько символов строки являются гласными.
Для этого достаточно:
- прочитать слово
s; - завести счётчик;
- пройти по всем символам строки;
- если текущий символ равен одной из букв
a,e,i,o,u, увеличить счётчик; - вывести ответ.
Это простая задача на работу со строкой и цикл.
2. Наблюдения
- Слово состоит только из строчных латинских букв, значит проверять нужно только строчные гласные.
- Гласных всего пять:
a,e,i,o,u. - Каждый символ можно обработать независимо от остальных.
- Длина строки не больше
1000, поэтому обычный проход по строке полностью подходит.
3. Алгоритм
- Считать строку
s. - Создать переменную
count = 0. - Для каждого символа
cв строке:- если
cравенa,e,i,oилиu, увеличитьcountна 1.
- если
- Вывести
count.
4. Почему это работает
Алгоритм просматривает каждый символ слова ровно один раз.
- Если символ — гласная, мы увеличиваем счётчик.
- Если символ — согласная, ничего не делаем.
Так как мы проверяем все символы строки и прибавляем ровно по одному за каждую гласную, итоговое значение count будет в точности равно количеству гласных букв в слове.
5. Сложность
Пусть длина строки равна n.
- Время работы:
O(n), потому что строка проходится один раз. - Память:
O(1), если не считать память на хранение самой строки.
6. Код на C++17
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
int count = 0;
for (char c : s) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
count++;
}
}
cout << count << '\n';
return 0;
}
7. Код на Python 3
s = input()
count = 0
for c in s:
if c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u':
count += 1
print(count)
Комментарии