de retour de la première à la non répétition de caractères dans une chaîne de caractères en javascript

Donc j'ai essayé de regarder dans la recherche, mais plus proche que je pouvais venir est une réponse similaire dans plusieurs langues différentes, je tiens à utiliser Javascript pour le faire.

Le problème est que j'ai une chaîne de caractères arbitraire que j'aimerais revenir à la première de la non répétition de caractère. EX: 'aba' -> serait de retour b
'aabcbd' -> serait de retour c.
C'est ce que j'ai à ce jour, seulement une simple boucle for pour commencer.

var someString = 'aabcbd';



var firstNonRepeatedCharacter = function(string) {
for(var i = 0; i < someString.length; i++){

}
};

http://jsfiddle.net/w7F87/
Vous ne savez pas où aller à partir d'ici

  • L'indice de non-répétition de caractère sera bizarre et il sera différent de celui du personnage avant qu'il. Cela devrait être suffisant pour passer à travers.
  • Je ne comprends pas, comment serait l'indice impair? Dans mon exemple c est dans le troisième indice, mais que faire si il a été aabbcd plutôt ce qui signifie qu'il serait dans le 4ème indice.?
  • Il pense qu'il doit répéter le personnage avant qu'il
  • Êtes-vous familier avec les objets de la carte en JavaScript? Tels que: var charMap = {}; charMap['a'] = 0; charMap['b'] = 1;? Vous pourriez parcourir la chaîne d'entrée, l'ajout de tous les caractères dans une table de caractères: jsfiddle.net/w7F87/14
  • à l'aide de la logique que vous indiqué, dans l'échantillon dans votre commentaire la non-répétition serait "d", la 6ème lettre à l'indice 5.
  • 'aabbcbd'.replace(/(\w)\1/g,"")[0]; 'aabcbd'.replace(/(\w)\1/g,"")[0]; à la fois le travail
  • Je m'excuse si je ne suis sorti que déroutant. dans la logique que j'ai posté dans le précédent commentaire 'aabbcd', c est le premier non-répétition de caractère n'est-il pas?
  • que voulez-vous dire "non-répétition" voulez-vous dire qu'il ne répète pas le personnage devant lui ou qu'il y a une seule occurrence du caractère dans la chaîne. À mon avis, les non-répétition signifie qu'il ne se produit pas dans une paire.
  • voulez-vous dire unique ou de non-répétition, parce que vous pouvez faire qui ne se répète un peu plus simple, plus rapide si les perf des questions...
  • quand je dis "non-répétition", je veux dire qu'il y a une seule occurrence dans la chaîne. si aba serait de retour b, acbcabd serait de retour d etc.
  • Je suppose unique serait un meilleur terme, désolé
  • désolé, alors, j'ai mal compris. J'ai ajouté un O(n) solution du problème comme l'a précisé.
  • Juste pour info: vous pouvez même le faire avec les regex accordé à la JS environnement est ECMAScript 2018 conforme. "abcab".match(/(\w)(?<!\1.+)(?!.*\1)/s)[1] fonctionne dans Chrome.

InformationsquelleAutor TaylorAllred | 2014-07-17