Задача
Задана строка s и буква c. Сколько раз буква встречается в строке?
Входные данные
Первая строка содержит строку s с не более чем $100$ символами. Вторая строка содержит прописную букву латинского алфавита c.
Выходные данные
Выведите сколько раз буква c встречается в строке s. Одна и та же заглавная и прописная буква считаются одинаковыми. То есть «a» и «A» считаются одинаковыми буквами.
Тесты
Programming Principles 1 p |
3 |
This is a cat sitting on a tablet | 5 |
Some english text e |
3 |
sSstring s |
3 |
Another SoME eNGliSh tExT e |
4 |
abcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacac b |
18 |
abcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacacabcbcaacbcaacac a |
36 |
aAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAabaAaAaBbAab a |
70 |
Решение через string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); char c; cin >> c; int L = s.length(), k = 0; for(int i = 0; i < L; i++){ if(s[i] == c || s[i] == c - 32)k++; } cout << k; return 0; } |
Решение через Null-terminated String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> #include <cstring> using namespace std; int main() { char s[100], c; cin.getline(s,100); cin >> c; int k = 0, i = 0; while(s[i] != '\0'){ if(s[i] == c || s[i] == c - ('a' - 'A')) k++; i++; } cout << k; return 0; } |
Объяснение
Сначала считывается строка, затем, интересующая буква. Потом посматриваем каждый символ строки, и если он совпадает с нужной буквой (Код символа «A» в ASCII— 65, «a»—97. Соответственно, разница между символами прописной и заглавной латинской буквы— $32$ (в ASCII буквы английского алфавита идут по порядку), и символ отличающийся на $32$ от искомого— его заглавная версия, и нужно его учитывать), увеличиваем счётчик $k$. Затем, выводим результат.