Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337

Переделать код для unordered_set

02.03.2018, 22:34. Показов 828. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня просьба к более опытным программистам данного форума. Можно ли как-то переделать код ниже для unordered_set? Подойдет ли этот контейнер для решения данной задачи? Если нет, то какой еще можно использовать? Данный код удаляет все повторы из строки сохраняя порядок символов. На входе строка, элементы которой переносятся в unordered_set<char>. Вот мое решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
using namespace std;
 
int main()
{
    string a;
    getline(cin, a);
    for (int j = 0; j < a.length(); j++)
    {
        for (int i = j + 1; i < a.length(); i++)
        {
            if (a[j] == a[i])
            {
                while (a[j] == a[i])
                {
                    a.erase(i, 1);
                }
            }
        }
    }
    cout << a << endl;
    system("pause"); 
    return 0;   
}
P.S. Сам алгоритм должен повторять исходный.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2018, 22:34
Ответы с готовыми решениями:

Переделать код программы для Borland++?
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; using namespace std; void main() { int kol={0,0}, pozit=-1; string...

Как переделать код для р8я частиц
Надо чтобы они имели скоростя одинаковы но соответсвенно их цвету--то есть как их поделить хотя бы на трир цвета с разными скоростями ...

Переделать код для Visual Studio 2008 c++
Нам задали лаб раб, я делал как консольное приложение, все сделал, а оказалось что надо делать под windows, хотел спросить сложно ли...

6
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,930
Записей в блоге: 5
02.03.2018, 22:54
Множества не хранят порядок элементов. С другой стороны множества и используют как раз для того, чтобы отказаться от этого алгоритма. Достаточно положить элемент в множество, -- и будет обеспечена уникальность. Поэтому непонятно требование сохранить алгоритм.
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
02.03.2018, 23:18  [ТС]
Цитата Сообщение от palva Посмотреть сообщение
Множества не хранят порядок элементов.
Здравствуйте! Спасибо за ваш ответ. Мне необходимо сохранить порядок остающихся элементов. Вот пример входных данных:

abc13a1b2z3c

Выходные данные:

abc132z

Данная задача решена (см. код выше), но в последнем тесте по времени не проходит. Есть алгоритм, который работает быстрее, но мне хотелось бы сохранить этот, чтобы посмотреть на скорость выполнения.

P.S. Можно ли как-то ускорить мой алгоритм?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
02.03.2018, 23:36
Месье знает толк в извращениях.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int main()
{
    bool table[256]={false};
    while(std::cin.peek()!='\n' && std::cin.peek()!=EOF)
    {
        int value=std::cin.get();
        if(!table[value])
        {
            table[value]=true;
            std::cout.put(value);
        }
    }
    std::cout<<std::endl;
    return 0;
}
1
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
03.03.2018, 02:23
Fixer_84, заводим unordered_set, идем по строке, если символа в множестве добавляем и добавляем в строку-результат(которая изначально пустая). Добавление в unordered_set работает за О(1), потому получаем алгоритм за линейное время.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
03.03.2018, 02:34
Цитата Сообщение от Новичок Посмотреть сообщение
Добавление в unordered_set работает за О(1), потому получаем алгоритм за линейное время.
А в худшем случае - добавление работает за линейное время. Плюс дергает аллокатор, для которого гарантий времени работы вообще никто, никому не давал.
0
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,361
03.03.2018, 02:53
Renji, выходит unordered_set вообще нельзя использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.03.2018, 02:53
Помогаю со студенческими работами здесь

Переделать код для динамического и двухмерного массива
Есть код, нужно его переделать для динамического и двухмерного массива и добавить возможность не только редактирования, но и удаления...

Переделать код для 400-ичной системы счисления
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; #include &quot;conio.h&quot; using namespace std; class chisla ...

Переделать код поиска седловой точки в квадратной матрице для прямоугольных матриц
Нужно переделать код поиска Седловой точки, с квадратной матрицы в динамическую(размер nxm) Вот код: #include &lt;stdio.h&gt; ...

Unordered_set и unordered_map
Добрый день. Объясните простыми словами отличия этих контейнеров от set и map. Не нашел простого объяснения на русском языке)

Переделать код для работы с файловым вводом/выводом (работа с массивом объектов пользовательского типа)
Доброго времени суток! Можно ли переделать эту прогу на работу с файлом при помощи потоковых функций ввода вывода, подключаемых библиотекой...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru