Retour aux défis
Facile 0 résolus 0 % de réussite

Premier caractère unique

Trouver le premier caractère qui n'apparaît qu'une seule fois.

Ce que vous allez apprendre

  • Compter les caractères avec un dictionnaire
  • Faire un second passage pour trouver le premier unique
  • Résoudre en temps linéaire

Problème

Retournez l'indice du premier caractère dans text qui apparaît exactement une fois. La casse est prise en compte.

Implémentez first_unique_index(text).

Entrée

text : Le texte à analyser.

Sortie

Retournez l'indice, ou -1 si chaque caractère se répète.

Contraintes

0 ≤ longueur ≤ 100 000

Exemples

Exemple 1
Entrée :
text = "swiss"

Sortie attendue :
expected = 1
Entrée :
std::string text = "swiss";

Sortie attendue :
long long expected = 1;
Entrée :
string text = "swiss";

Sortie attendue :
long expected = 1;

Explication

s se répète, w apparaît une seule fois à l'indice 1.

Exemple 2
Entrée :
text = "aabb"

Sortie attendue :
expected = -1
Entrée :
std::string text = "aabb";

Sortie attendue :
long long expected = -1;
Entrée :
string text = "aabb";

Sortie attendue :
long expected = -1;

Explication

Chaque caractère se répète : -1.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Il faut les caractères qui apparaissent exactement une fois, pas juste le premier différent.

Indice 2

Compte d’abord la fréquence de tous les caractères, puis trouve la première position de fréquence un.

Indice 3

Souviens-toi que les majuscules et les minuscules sont des caractères différents.

Complexité attendue

temps O(n), espace supplémentaire O(k)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.