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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
#1

Удаление повторяющихся символов - C++

21.01.2012, 15:24. Просмотров 2213. Ответов 4
Метки нет (Все метки)

из последовательности символов удалить самую большую из одинаковых элементов

допустим есть строка aabbbbzcc, на выходе aazcc
abczzhhklllllllm на выходе abczzhhkm

как ни кручу не могу реализовать задачу...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 15:24     Удаление повторяющихся символов
Посмотрите здесь:

C++ Удаление повторяющихся слов из стоки на C
удаление повторяющихся точек C++
C++ Удаление повторяющихся символов
Удаление повторяющихся символов из строки C++
Удаление из строки повторяющихся символов C++
C++ Удаление повторяющихся элементов из списка
C++ Удаление повторяющихся символов массива
Удаление повторяющихся элементов в векторе C++
C++ Удаление повторяющихся символов
Удаление из вектора повторяющихся элементов C++
Удаление повторяющихся чисел C++
Поиск повторяющихся символов в тексте и удаление таких строк C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
21.01.2012, 15:43     Удаление повторяющихся символов #2
Это удаляем повторы:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    std::string s( "abczzhhklllllllm" );
    s.resize( std::unique( s.begin(), s.end() ) - s.begin() );
    std::cout << s << std::endl;
    return 0;
}
Добавлено через 9 минут
Вот работает, может, не совсем оптимально:
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 <iostream>
#include <string>
#include <map>
#include <algorithm>
 
int main()
{
    std::string s( "abczzhhklllllllm" );
    std::map < char, unsigned int > m;
    
    for( size_t index = 0; index < s.length(); m[ s[ index ] ]++, index++ );
 
    char char_max = m.begin() -> first;
 
    for( std::map < char, unsigned int >::iterator it = m.begin(); it != m.end(); ++it )
        if ( it -> second > m[ char_max ] )
            char_max = it -> first;
 
    s.erase( std::remove( s.begin(), s.end(), char_max ), s.end() ); 
    
    std::cout << s << std::endl;
    return 0;
}
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
21.01.2012, 15:45     Удаление повторяющихся символов #3
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
26
27
28
29
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
    char *s = "abdddccccdddddde";
    int pos = 0, poscur = 0, i, max = 0, count = 1;
    for (i = 0; i < strlen(s) - 1; i++){
        if (s[i+1] == s[i]) {
            if (count == 1)
                poscur = i;
            count++;
        }
        else
            count = 1;
        if (count > max) {
            max = count;
            pos = poscur;
        }
    }
    for (i = pos; i < pos+max; i++){
        if (i == strlen(s)-1)
            break;
        s[i] = s[i+max];
    }
    s[i] = '\0';
    return 0;
}
fruktik
 Аватар для fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
21.01.2012, 16:01  [ТС]     Удаление повторяющихся символов #4
Mиxaил, спасибо, но использовать функции для работы со строками нельзя,
только работа с массивом символов)
megastriker,
щас попробуем)
кстати тоже strlen присутствует
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
21.01.2012, 16:12     Удаление повторяющихся символов #5
fruktik, вместо strlen() можно написать sizeof( s ) - 1, если строку s ( массив символов ) вводить через gets( s ).
Yandex
Объявления
21.01.2012, 16:12     Удаление повторяющихся символов
Ответ Создать тему
Опции темы

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