Todos os desafios
Fácil 0 resolvidos 0% de aceitação

Registros únicos

Remova registros duplicados que sejam iguais por valor, mantendo o primeiro de cada na ordem.

O que você vai aprender

  • Comparar records pelos valores
  • Remover duplicatas mantendo a ordem
  • Normalizar campos removendo espaços

Problema

Ver original (inglês)

C# records comparam por valor: dois records são iguais quando todos os seus campos são iguais, mesmo que sejam objetos diferentes. Isso torna a remoção de duplicatas fácil.

Cada record é escrito name,city. Remova os espaços ao redor de ambos os campos; depois disso, dois records são iguais quando ambos os campos coincidem exatamente (a caixa importa).

Implemente unique_records(records).

Input

records: Os registros, na ordem.

Output

Retorne os registros distintos na ordem em que aparecem pela primeira vez, escritos name,city com os campos aparados.

Restrições

0 ≤ número de registros ≤ 100,000

Cada campo tem de 1 a 30 caracteres e nenhuma vírgula

Exemplos

Exemplo 1
Entrada:
records = ["Ada,London", "Lin, Hanoi", "Ada , London"]

Saída esperada:
expected = ["Ada,London", "Lin,Hanoi"]
Entrada:
std::vector<std::string> records = {"Ada,London", "Lin, Hanoi", "Ada , London"};

Saída esperada:
std::vector<std::string> expected = {"Ada,London", "Lin,Hanoi"};
Entrada:
string[] records = new string[] {"Ada,London", "Lin, Hanoi", "Ada , London"};

Saída esperada:
string[] expected = new string[] {"Ada,London", "Lin,Hanoi"};

Explicação

Depois de remover os espaços, o terceiro registro é igual ao primeiro, então ele é descartado: ["Ada,London", "Lin,Hanoi"].

Exemplo 2
Entrada:
records = ["ada,Paris", "Ada,Paris"]

Saída esperada:
expected = ["ada,Paris", "Ada,Paris"]
Entrada:
std::vector<std::string> records = {"ada,Paris", "Ada,Paris"};

Saída esperada:
std::vector<std::string> expected = {"ada,Paris", "Ada,Paris"};
Entrada:
string[] records = new string[] {"ada,Paris", "Ada,Paris"};

Saída esperada:
string[] expected = new string[] {"ada,Paris", "Ada,Paris"};

Explicação

A caixa importa, então estes dois registros são diferentes: ["ada,Paris", "Ada,Paris"].

Como abordar

Tente sozinho primeiro e depois abra uma dica de cada vez.

Dica 1

Remova os espaços dos dois campos antes de comparar.

Dica 2

Um conjunto de pares (name, city) lembra os records já vistos.

Dica 3

Emita cada record novo na primeira vez em que aparece, na ordem de entrada.

Complexidade esperada

tempo O(comprimento total), espaço extra O(número de registros)

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.