Problema
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
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"].
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.