String

Résolu/Fermé
pepito0223 Messages postés 3 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 13 juin 2018 - 11 juin 2018 à 12:30
pepito0223 Messages postés 3 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 13 juin 2018 - 13 juin 2018 à 15:23
Bonjour,
voici la question qui m'a été posée:

Ecrivez la méthode char plusFrequent(String s) qui permet de déterminer le caractère le plus présent dans la chaine de caractères s.

A titre d'exemple, le caractère le plus fréquent de la chaîne abbDDaa est a. Si la chaîne contient des caractères avec le même nombre d'occurences maximal, renvoyez le premier trouvé de gauche à droite.

je n'ai aucun soucis a identifier le caractère le plus frequent sauf quand il y en a plusieurs, je n'arrive pas à retourner le premier rencontré. pourriez vous m'aider? merci

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
11 juin 2018 à 13:01
Bonjour,

Il faudrait voir ton code, selon comment tu as fait c'est peut-être pas grand chose...
1
pepito0223 Messages postés 3 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 13 juin 2018
11 juin 2018 à 14:16
en fait je n'ai juste pas reussi à coder la partie permettant de retourner le premier trouvé mais voici mon code
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > pepito0223 Messages postés 3 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 13 juin 2018
11 juin 2018 à 17:51
L'impression écran ce n'est pas vraiment très pratique, un copier-coller ça aurait été mieux, parce que je ne vais pas m'amuser à tout réécrire pour tester ton code.

De tête, je pense que tu devrais remplacer tes lignes 13 et 14 par ceci :

if (count > max) {
    max = count;

Comme ceci, tu ne rentres dans le if que lorsque c'est la première fois que tu obtiens cette valeur du max, alors qu'avant tu rentrais dans le if à chaque fois qu'il y avait égalité avec le max existant, donc c'était la dernière lettre la plus fréquente qui était récupérée au lieu de la première.

Remarque : je pense que tu peux améliorer les performances de ton code, tout en conservant le même résultat, en initialisant ta deuxième boucle avec un
for (int j = i;
0
pepito0223 Messages postés 3 Date d'inscription lundi 11 juin 2018 Statut Membre Dernière intervention 13 juin 2018
13 juin 2018 à 15:23
Un tout grand merci KX, en essayant ce que tu m'as dis je tombe sur la bonne réponse.
merci beaucoup.
0