Salut à tous,
je voudrais savoir comment faire pour compter le nombre de vois que se répete un caractère dans une chaine. Et surtout qu'elle est la méthode la plus performante. (Système de boucle, expression régulière...?).
Merci d'avance!
Salut à tous,
je voudrais savoir comment faire pour compter le nombre de vois que se répete un caractère dans une chaine. Et surtout qu'elle est la méthode la plus performante. (Système de boucle, expression régulière...?).
Merci d'avance!
salut Death83,
il s'agit lpus d'un problème d'algo qu'autre chose!comment faire pour compter le nombre de vois que se répete un caractère dans une chaine
je vais te mettre sur la voie: tu as la classe String dans cette classe tu peut récupérer la taille de ta chaine! avec la fonction size()
ensuite tu peut récupérer un caractère grâce à la fonction charat(int index) qui te rentourne un char
Il te suffit de bouclé sur le nombre de caractères que tu as dans ta chaine et de faire les tests si le caractère à déjà été lu, alors on l'insert dans un conteneur sinon on on increment un compteur de lettre!
Tu peut faire une classe compteur de lettre et ou ton conteneur ( comme les vecteurs) contiendrai des objets du type compteur!
A la fin de ta boucle tu n'as plus qu'à tester quel objet compteur à l'entier le plus grand.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class compteur { public: int compteur; char lettre; }
Bonjour,
en utilisant la SL, on peut faire ainsi:
Ca fonctionne, cependant, il doit certainement être possible de faire plus efficace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int CountChar(const std::string &string_to_parse, const char &char_to_find) { int count = 0; size_t pos = string_to_parse.find(char_to_find, 0); while (pos<string_to_parse.size()) { count++; pos = string_to_parse.find(char_to_find, pos+1); } return count; }
Ou 'o' est le caractère à rechercher par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::string str = "bonjour !"; int n = std::count(str.begin(), str.end(), 'o');
Merci je vais essayer ca (ca à l'air d'être la méthode la plus simple ).Envoyé par Fiquet
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager