Montrant unique de caractères d'une chaîne en une seule fois
J'ai une chaîne de caractères avec la répétition des lettres. Je veux des lettres qui sont répétés plus d'une fois de montrer qu'une seule fois. Par exemple, j'ai une chaîne aaabbbccc je veux que le résultat soit abc. jusqu'à présent ma fonction fonctionne comme ceci:
- si la lettre ne le répétez pas, il n'est pas montrée
- si c'est répété une fois, c'est montrer qu'une seule fois (c'est à dire aa montre une)
- si c'est répété deux fois, montre tous (c'est à dire aaa montre aaa)
- si c'est répété 3 fois, il montre 6 (si aaaa il montre aaaaaa)
function unique_char(string) {
var unique = '';
var count = 0;
for (var i = 0; i < string.length; i++) {
for (var j = i+1; j < string.length; j++) {
if (string[i] == string[j]) {
count++;
unique += string[i];
}
}
}
return unique;
}
document.write(unique_char('aaabbbccc'));
La fonction doit être avec boucle à l'intérieur d'une boucle; c'est pourquoi la deuxième for
est à l'intérieur de la première.
Dans regexp vous pouvez écrire
quel doit être le résultat de
le résultat devrait être abrcd
Comment ça? Il ne correspond pas à votre description. Btw, ce qui est le cas d'utilisation de ce (ou de devoirs)?
'aaabbbccc'.replace(/(.)\1+/g, "$1")
quel doit être le résultat de
unique_char('abracadabra')
être?le résultat devrait être abrcd
Comment ça? Il ne correspond pas à votre description. Btw, ce qui est le cas d'utilisation de ce (ou de devoirs)?
OriginalL'auteur Zlatko Soleniq | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Convertir un tableau en premier, puis la réponse ici, et rejoindre, comme suit:
Dans une seule ligne 🙂
OriginalL'auteur Upayavira
Vous pouvez utiliser un expression régulière avec un personnalisé la fonction de remplacement:
OriginalL'auteur Bergi
Trop tard peut-être, mais encore ma version de réponse à ce post:
OriginalL'auteur Parthasarathy K
Par le libellé de la question: "si la lettre n'est pas de répéter ses pas montré"
OriginalL'auteur brian buck
Votre problème est que vous ajoutez à
unique
chaque fois que vous trouvez le caractère dansstring
. Vraiment, vous devriez probablement faire quelque chose comme ceci (depuis que vous avez spécifié la réponse doit être imbriquée pour la boucle):À cela nous ajoutons seulement le caractère trouvé dans
string
àunique
si elle n'est pas déjà là. Ce n'est vraiment pas un moyen efficace de faire tout cela ... mais en fonction de vos besoins, il doit travailler.Je ne peux pas courir ce depuis que je n'ai rien d'utile pour exécuter JavaScript ... mais la théorie de cette méthode devrait fonctionner.
Mon commentaire est encore un peu valables ... je n'ai rien d'utile pour exécuter JavaScript. Et je ne pense pas être utilisé de quelque chose qui est vraiment dépendant d'une langue.
Pour la plupart -- Cette ligne ne fonctionne pas:
bool foundIt = false;
Devrait êtrevar foundIt = false;
Les chiffres ... depuis je n'ai jamais programmé dans les deux langues 😉
il fonctionne avec le var, mais j'ai une question qu'est-ce que (!foundIT) et peut-il être écrit d'une manière différente
OriginalL'auteur cottonke
À l'aide de lodash:
OriginalL'auteur Lukasz Wiktor
Essayer si des personnages en double doivent être affichées une fois, c'est à dire,
pour i/p: aaabbbccc o/p: abc
Et essayer si seulement unique de caractères(String Bombarder Algo) doivent être affichées, ajouter une autre condition "et" supprimer les caractères qui sont venus plus d'une fois et de n'afficher que des caractères uniques, c'est à dire,
pour i/p: aabbbkaha o/p: kh
OriginalL'auteur jayad aadrit
Ici est la fonction plus simple à faire que
OriginalL'auteur Ahmad Adel