Форум программистов, компьютерный форум CyberForum.ru

Найти в строке символы, встречающиеся ровно k раз - C++

Восстановить пароль Регистрация
 
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 38
08.07.2015, 10:32     Найти в строке символы, встречающиеся ровно k раз #1
Помогите решить задачу с использованием множества: в данной строке те символы, которые встречаются ровно k раз.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 10:32     Найти в строке символы, встречающиеся ровно k раз
Посмотрите здесь:

C++ Удалить из строки s1 все символы, встречающиеся в строке s2.
C++ Удалить из массива все элементы, встречающиеся ровно n раз
Напечатать все слова , которые встречаются в исходной строке ровно один раз C++
Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз C++
C++ Выведите все строчные гласные латинские буквы, встречающиеся в данной строке ровно один раз.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dcStep
 Аватар для dcStep
39 / 39 / 20
Регистрация: 13.04.2015
Сообщений: 83
08.07.2015, 13:16     Найти в строке символы, встречающиеся ровно k раз #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <iostream>
#include <unordered_map>
 
int main() {
    int k;
    std::string text = "Some text, some number 42, some signs: '!@#$^&*_+'";
    std::unordered_map<char, unsigned int> counts;
 
    std::cin >> k;
 
    std::for_each(std::begin(text), std::end(text), [&counts](char c) {
        counts[c]++;
    });
 
    for(auto& kv: counts) {
        if ( k == kv.second ) {
            std::cout << kv.first << ": " << kv.second << std::endl;
        }
    }
 
    return 0;
}
Код
input:
4

output:
s: 4
m: 4
Krock21rus
73 / 73 / 19
Регистрация: 18.11.2013
Сообщений: 369
Завершенные тесты: 2
08.07.2015, 14:26     Найти в строке символы, встречающиеся ровно k раз #3
dcStep, расскажите пожалуйста почему unordered_map, а не map, и что это такое
dcStep
 Аватар для dcStep
39 / 39 / 20
Регистрация: 13.04.2015
Сообщений: 83
08.07.2015, 15:07     Найти в строке символы, встречающиеся ровно k раз #4
Цитата Сообщение от Krock21rus Посмотреть сообщение
расскажите пожалуйста почему unordered_map
В нём поиск элементов происходит быстрее (если нет коллизий) в отличии от map (если будут коллизии, то map быстрее).
http://stackoverflow.com/a/13799886
Цитата Сообщение от Krock21rus Посмотреть сообщение
что это такое
Примерно то же, что и обычный map, но со своими плюсами (быстрый поиск) и минусами (нельзя сортировать).
unordered_map

Добавлено через 10 минут
Основной причиной почему я выбрал его - порядок "ключей" был неважен.
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 38
09.07.2015, 10:07  [ТС]     Найти в строке символы, встречающиеся ровно k раз #5
Цитата Сообщение от dcStep Посмотреть сообщение
for(auto& kv: counts) {
Подчеркивает kv и пишет "Невозможно вывести тип авто(требуется инициализатор)

Что делать?

Добавлено через 51 минуту
Пожалуйста! Очень нужно!
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,216
Завершенные тесты: 3
09.07.2015, 10:08     Найти в строке символы, встречающиеся ровно k раз #6
Алина1234, у вас старый компилятор, думаю, лямбда-выражение тоже не пройдет. Вот подходящая интерпретация программы scStep:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <algorithm>
#include <iostream>
#include <unordered_map>
 
typedef std::unordered_map<char, unsigned> type;
 
int main() 
{
    int k;
    std::string text = "Some text, some number 42, some signs: '!@#$^&*_+'";
    type counts;
 
    std::cin >> k;
 
    for (int i = 0; i < text.length(); ++i)
        counts[text[i]]++;
 
    for (type::const_iterator i = counts.cbegin(); i != counts.cend(); ++i)
        if (k == i->second)
            std::cout << i->first << ": " << i->second << std::endl;
 
    system("pause");
}

Не по теме:

P.S. за помощь на форуме принято благодарить. Кнопки "Спасибо" не просто так стоят

Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 38
09.07.2015, 10:11  [ТС]     Найти в строке символы, встречающиеся ровно k раз #7
Что-то не идёт
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,216
Завершенные тесты: 3
09.07.2015, 10:54     Найти в строке символы, встречающиеся ровно k раз #8
Алина1234, я конечно понимаю, что погроммисты должны уметь все, тем не менее, среди них не так много телепатов, и я, к сожалению, не в их числе. Какая среда разработки? Какая ошибка? Чем программа отвечает?
S_el
1908 / 1503 / 296
Регистрация: 15.12.2013
Сообщений: 5,920
09.07.2015, 10:58     Найти в строке символы, встречающиеся ровно k раз #9
Цитата Сообщение от Krock21rus Посмотреть сообщение
расскажите пожалуйста почему unordered_map, а не map, и что это такое
разные структуры данных в основе и из-за этого unordered_map обеспечивает более высокую скорость работы.

Не по теме:


Цитата Сообщение от tnk500 Посмотреть сообщение
P.S. за помощь на форуме принято благодарить. Кнопки "Спасибо" не просто так стоят
А еще на форуме не принято спасибки выпрашивать

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2015, 11:14     Найти в строке символы, встречающиеся ровно k раз
Еще ссылки по теме:

Из предложения напечатать те символы, которые встречаются в нем ровно один раз C++
Найти все символы, которые встречаются в строке более двух раз C++
C++ Из заданного текста выбрать те символы, которые встречаются в нём ровно один раз

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,216
Завершенные тесты: 3
09.07.2015, 11:14     Найти в строке символы, встречающиеся ровно k раз #10
S_el,

Не по теме:

А я и не для себя выпрашивал. Программу не я написал

Yandex
Объявления
09.07.2015, 11:14     Найти в строке символы, встречающиеся ровно k раз
Ответ Создать тему
Опции темы

Текущее время: 19:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru