Помогите разобраться со строками в с++

309
26 мая 2017, 15:04

Суть задания состоит в том, что есть строка, и нужно вывести её, но слова в которых содержатся более 3х одинаковых букв вывести их '!'. причём допустим может быть 4 одинаковых буквы в этом слове и должно вывести "!!!!". Например срока: abc abb aaa aaaabc должно вывести : abc abb !!! !!!!; мой код в онлайн компиляторе http://cpp.sh/93mdg

Answer 1

Если я все правильно понял, то вот код

#include <iostream>
#include <map>
using namespace std;
int getMaxSameLetters(string s)
{
    map<char, int> freq;
    for (auto symb : s) {
        if (isalpha(symb)) {
            ++freq[symb];
        }
    }
    int maxSameLetters = 0;
    for (auto val : freq) {
        maxSameLetters = max(maxSameLetters, val.second);
    }
    return maxSameLetters;
}
string convertString(string s, int sameLetters)
{
    if (sameLetters < 3) {
        return s;
    }
    return string(sameLetters, '!');
}
int main()
{
    string text, tmp;
    getline(cin, text);
    for (auto symb : text) {
        if (isalpha(symb)) {
            tmp += symb;
        } else {
            cout << convertString(tmp, getMaxSameLetters(tmp)) << symb;
            tmp = "";
        }
    }
    cout << convertString(tmp, getMaxSameLetters(tmp)) << endl;
    return 0;
}
Answer 2

это нужно делать через регулярные выражения.
Если не ошибаюсь, то вот такое: (\w)\2+

READ ALSO
Нужна помощ с файлами в с++ [требует правки]

Нужна помощ с файлами в с++ [требует правки]

Элементами файла есть сведения об успеваемостиСколько в группе отличников и двоечников?Количество студентов неограничено

283
Чтение из текстового файла в QTableView

Чтение из текстового файла в QTableView

Требуется из простого текстового файла выгрузить данные построчно в QTableView (используется QStandardItemModel)Все интересующие меня данные я получаю...

338
Как связать локальные адреса из разных сетей?

Как связать локальные адреса из разных сетей?

Есть два реальных IP в разных странах, под каждым своя сеть с локальными адресамиНужно связать конкретный локальный IP одной сети с конкретным...

303