Как я могу извлечь уникальный шестнадцатеричный номер среди МНОГИХ шестнадцатеричных чисел в последовательности?Я знаю, что последовательность не имеет разделителей, оканчивается на «.», И все шестнадцатеричные числа имеют длину 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 Я не знаю, что такое тесты.Это не моя домашняя работа, не экзамен и не что-то еще.Это просто проблема вне класса, которую я обнаружил в системе судейства.