Дана строка, возможно, содержащая пробелы. Определите, какая буква латинского алфавита (или какие буквы) в этой строке встречается чаще всего. При решении этой задачи заглавные и строчные буквы считаются одинаковыми, а прочие символы, не являющиеся буквами, не учитываются.
При решении этой задачи нельзя пользоваться вложенными циклами. Входная строка должна обрабатываться за один проход.
Входные данные
Дана непустая строка.
Выходные данные
Программа должна вывести в первой строке все буквы, которые встречаются чаще всего в исходной строке. Выводить буквы необходимо в заглавном написании, в алфавитном порядке, без пробелов. Во второй строке выведите единственное число — сколько раз в данной строке встречаются эти буквы.
Примеры
Ввод
Вывод
- We all live in the Yellow Submarine!
EL
5
C/C++
C++ Самая частая буква
#include
#include
#include
#include
#include
using namespace std;
int main()
{
map mapa;
string str;
//получаем строку str:
getline(cin, str);
//считаем сколько символов соответствующих алфавиту повторяется:
for (auto& i : str)
{
//символы a...Z isalpha сразу переводятся в больший регистр toupper
if (isalpha(i)) mapa[toupper(i)]++;
}
vector mapas;
mapas.reserve(mapa.size());
//перевод из мапы в вектор для последующей сортировки
for (auto it = mapa.begin(); it != mapa.end(); it++)
{
mapas.emplace_back(move(*it));
}
//сортировка вектора по числу букв (второе число пары) от большего к меньшему
sort(mapas.begin(), mapas.end(), [](auto& l, auto& r) {return l.second > r.second; });
//нахождение диапазона букв, имеющих одинаково максимальное число повторений
auto equ = equal_range(mapas.begin(), mapas.end(), *mapas.begin(), [](auto& l, auto& r) {return l.second > r.second; });
//печать букв из этого диапазона
for (; equ.first != equ.second; equ.first++)
cout first;
}
Сергей Козлов
У вас работает, но во второй строке нужно количество повторяющихся букв
Артем Атаров
проходит только первые 5 тестов
#include
#include
#include
#include
using namespace std;
pair letter_max(const map& box) {
using pair_t = pair;
auto cmp = [](const pair_t& a, const pair_t& b) {
return a.second < b.second;
};
return *max_element(box.begin(), box.end(), cmp);
}
map split(const string& line) {
map box;
for (auto ch : line) {
const auto letter = toupper(ch);
if (isalpha(letter)) ++box[letter];
}
return box;
}
void show(const map& box, const size_t max) {
for (const auto& [letter, count] : box) {
if (count == max) {
cout
собери буквы в массив пар (буква, число), в качестве числа используй сколько раз она встречается. и найди в массиве максимум по числу
ПРОВЕРЕННО СИРИУСОМ(и чатом gpt))))
#include <iostream>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
int main() {
string s;
getline(cin, s);
map<char, int> freq;
for (auto c : s) {
if (isalpha(c)) {
freq[toupper(c)]++;
}
}
int max_freq = 0;
for (auto p : freq) {
max_freq = max(max_freq, p.second);
}
for (auto p : freq) {
if (p.second == max_freq) {
cout << p.first;
}
}
cout << endl << max_freq << endl;
return 0;
}
#include <iostream>
#include <string>
#include <algorithm>
#include <map>
using namespace std;
int main() {
string s;
getline(cin, s);
map<char, int> freq;
for (auto c : s) {
if (isalpha(c)) {
freq[toupper(c)]++;
}
}
int max_freq = 0;
for (auto p : freq) {
max_freq = max(max_freq, p.second);
}
for (auto p : freq) {
if (p.second == max_freq) {
cout << p.first;
}
}
cout << endl << max_freq << endl;
return 0;
}
Похожие вопросы
- Самая частая буква
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Почему создатель Linux Линус Торвальдс называет C++ ужасным языком, а ядро ОС Linux пишется только на Си?
- Задача на C++ (Остатки).
- Напишите программу, которая подсчитает и выведет количество слов длины 10, которые можно составить из букв a, b, c.
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха
- Задача по c++ на векторы. Часть программы написана. Нужны правки.