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

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

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

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

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

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

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

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

Удаление повторяющихся символов - C++
Задача банальна. Удалить повторяющиеся символы в строке. В интернете шарил, предложенные варианты слишком сложные и непонятные. Язык си,...

Удаление повторяющихся символов - C++
Есть строка символов, я её обрабатываю, удаляю слово с повторяющимися символами,дело в том что заодно удаляются и цифровые слова, 55 44 33...

Удаление повторяющихся символов из строки - C++
Необходимо написать функцию delete_repeats, которая удаляет все повторяюшиеся символы из строки. например: Only three more lessons...

Удаление из строки повторяющихся символов - C++
Например Ввод: ABBGBAZ Вывод: ABGZ

Удаление повторяющихся символов массива - C++
Надо сделать так что бы повторяющиеся символы массива удалялись, а сам массив сдвигался.

Поиск повторяющихся символов в тексте и удаление таких строк - C++
нужен готовый .exe. Есть .txt файлы, в нем нужно по удалять строчки - где какой либо символ повторяется больше 2, 3 раз и т.д. пример:...

Удаление повторяющихся чисел - C++
вот мой код vector<int> array; ifstream f("test.txt"); while (!f.eof()) { int tmp; f >> tmp; array.push_back(tmp); ...

Удаление повторяющихся точек - C++
в общем, делаю курсовик, вот его задание: "Даны N точек на плоскости. Для всех треугольников, образуемых любыми тремя точками,...

Удаление повторяющихся элементов в векторе - C++
Нужно перегрузить унарный оператор ~ что бы он удалял повторяющиеся элементы в векторе vector& operator ~ () { if (count > 0) ...

Удаление повторяющихся слов из стоки на C - C++
Здравствуйте. Помогите пожалуйста реализовать задачу: Дана строка. Группа символов разделленая одним или несколькими пробелами считается...

Удаление из массива повторяющихся элементов - C++
Значит,задача : удалить повторы в массиве, оставив по одному вхождению! моя идея. если 2 компонента, стоящие рядом, равны друг другу,...

Удаление повторяющихся значений в списке - C++
Добрый день. Нужна помощь в написании функции удаления повторяющихся элементов в списке. struct Adr { char name; char street; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
533 / 438 / 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
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
21.01.2012, 16:01  [ТС]     Удаление повторяющихся символов #4
Mиxaил, спасибо, но использовать функции для работы со строками нельзя,
только работа с массивом символов)
megastriker,
щас попробуем)
кстати тоже strlen присутствует
Mиxaил
533 / 438 / 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     Удаление повторяющихся символов
Ответ Создать тему
Опции темы

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