Как я могу извлечь уникальный гекс из строки? - PullRequest
0 голосов
/ 21 сентября 2019

Как я могу извлечь уникальный шестнадцатеричный номер среди МНОГИХ шестнадцатеричных чисел в последовательности?Я знаю, что последовательность не имеет разделителей, оканчивается на «.», И все шестнадцатеричные числа имеют длину 5. И если число не уникально (то есть искали одно), то оно будет повторяться даже раз.

ПримерВвод / вывод:

input: abab1bca98abab1.       
output: bca98

input: 44444111112222244444222224444444444. 
output:11111

input: 01aefabcdeabcde01aef01aefb00b501aef. 
output:b00b5

Вот моя попытка:

#include <iostream>
#include <string>
#include <vector>

int convertToHex(std::string piece)
{
    int hex = std::stoi(piece, 0, 16);
    return hex;
}

int main()
{   
    std::string seq;
    std::cin.sync_with_stdio(false); 
    std::cin >> seq;

    std::vector<int> hexVec;

    size_t SIZE = seq.length()-1;

    int counter = 0;
    std::string hex("");

    for (size_t i = 0; i < SIZE; i++)
    {
        hex += seq[i];
        counter++;
        if (counter == 5)
        {
            hexVec.push_back(convertToHex(hex));
            counter = 0;
            hex = "";
        }
    }

    size_t vecSIZE = hexVec.size();

    /*for (size_t i = 0; i < vecSIZE; i++)
    {
        std::cout << std::hex << hexVec[i] << std::endl;
    }*/

    for (size_t i = 0; i < vecSIZE; i++)
    {
        int currEl = hexVec[i];
        for (size_t j = 0; j < vecSIZE; j++)
        {
            if (currEl == hexVec[j] && i != j)
            {
                break;
            }
            else if (j == vecSIZE - 1)
            {
                std::cout.sync_with_stdio(false);
                std::cout << std::hex << hexVec[i];
                return 0;
            }
        }

    }

    return 0;
}

Но это дает мне: Тест № 5 (Неверный ответ) Использованное время: 0,178 с Использованная память: 2,36 МБ

Тест № 6 (ограничение памяти) Используемое время: 3,770 с Используемая память: 6,59 МБ

Тест № 7 (Ограничение памяти) Используемое время: 3,769 с Использованная память: 6,71 МБ

Тест № 8 (ошибка времени выполнения) Используемое время: 0,178 с Используемая память: 8,89 МБ

PS Я не знаю, что такое тесты.Это не моя домашняя работа, не экзамен и не что-то еще.Это просто проблема вне класса, которую я обнаружил в системе судейства.

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