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

Primeiro Caractere Único

Encontre o primeiro caractere que aparece apenas uma vez.

O que você vai aprender

  • Contar caracteres com um dicionário
  • Fazer uma segunda passada para achar o primeiro único
  • Resolver em tempo linear

Problema

Ver original (inglês)

Retorne o índice do primeiro caractere em text que aparece exatamente uma vez. Diferencia maiúsculas de minúsculas.

Implemente first_unique_index(text).

Entrada

text: O texto a ser analisado.

Saída

Retorne o índice, ou -1 se todos os caracteres se repetirem.

Restrições

0 ≤ comprimento ≤ 100.000

Exemplos

Exemplo 1
Entrada:
text = "swiss"

Saída esperada:
expected = 1
Entrada:
std::string text = "swiss";

Saída esperada:
long long expected = 1;
Entrada:
string text = "swiss";

Saída esperada:
long expected = 1;

Explicação

s se repete, w aparece uma vez no índice 1.

Exemplo 2
Entrada:
text = "aabb"

Saída esperada:
expected = -1
Entrada:
std::string text = "aabb";

Saída esperada:
long long expected = -1;
Entrada:
string text = "aabb";

Saída esperada:
long expected = -1;

Explicação

Todos os caracteres se repetem: -1.

Como abordar

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

Dica 1

Você precisa de caracteres que apareçam exatamente uma vez, não apenas do primeiro diferente.

Dica 2

Conte todas as frequências de caracteres primeiro, depois encontre a primeira posição com frequência 1.

Dica 3

Lembre que letras maiúsculas e minúsculas são caracteres diferentes.

Complexidade esperada

tempo O(n), espaço extra O(k)

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.