Как подсчитать вхождения всех строк в массиве и заменить последние вхождения каждый раз, когда повторяется? - PullRequest
0 голосов
/ 09 июля 2019

Я хочу создать приложение, использующее Qt, которое позволяет мне просматривать текстовый файл, содержащий несколько строк повторяющихся строк, сохранять содержимое в массиве и считать каждый раз, когда строка повторяется.Я хочу заменить два последних вхождения на «-», если эта строка повторяется более двух раз.Если эта строка повторяется всего два раза, я могу просто заменить последнее вхождение на «-».

Я только что узнал, как подсчитать количество вхождений строки в массиве, но это не то, что мне нужно.

Примечание: я должен игнорировать первые и последние вхождения строки.

Пока мой код

    void MushMushPlugin::browse()
{
    QString filename = QFileDialog::getOpenFileName(
        this,
        QStringLiteral("Ouvrir Fichier"),
        "",
        "Fichiers Text(*.txt)");
    browseLine->setText(filename);
    qDebug() << "here: ";
    qDebug() << getFileContent(filename);
    QList<QString> myarray = getFileContent(filename);
    get_output_list(myarray);
}
QList<QString> MushMushPlugin::getFileContent(QString filename)
{
    QFile inputFile(filename);
    inputFile.open(QIODevice::ReadOnly);
    QTextStream stream(&inputFile);
    stream.setCodec("UTF-8");
    QList<QString> fileContent;
    while (!stream.atEnd()) {
        QString line;
        line = stream.readLine();
        fileContent.append(line);
    }

    return fileContent;
    //return stream.readLine
}

QList<QString> MushMushPlugin::get_output_list(QList<QString> original_list)
{
    QList<QString> output_list = QList<QString>();
    qDebug() << original_list;
    //return m_array;
    QList<QString> tmp_list = QList<QString>();
    int j = 0;
    for (int i = 0; i < original_list.size()-1; i++) {
        tmp_list.append(original_list[i]);
        if (original_list[i] == original_list[i+1]) {
            tmp_list.append(original_list[i+1]);
        }
        else {
            output_list.append(tmp_list);
            tmp_list = QList<QString>();
        }
    }

    qDebug() << output_list;
    return output_list;
}

QList<QString> MushMushPlugin::replace_with_underscore(QList<QString> duplicatedList)
{
    QList<QString> m_array = duplicatedList;
    if (m_array.size() > 2) {
        m_array.replace(m_array.size(), "-");
        m_array.replace(m_array.size()-1, "-");
    }
    if (m_array.size() == 2) {
        m_array.replace(m_array.size(), "-");
    }
    return m_array;
}

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

ААА

ААА

ААА

БББ

БББ

куб. См

куб.

ccc

ddd

ddd

ddd

ddd

Ожидаемый результат

ааа

-

-

bbb

-

ccc

-

-

DDD

DDD

-

-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...