Bonjour s'il vous plait comment écrire la Fonction inverse
qui permet à partir d’une chaîne de caractère donnée "ch"
de retourner son inverse.
(la version itérative) avec la boucle Pour
Merci d'avance
Bonjour s'il vous plait comment écrire la Fonction inverse
qui permet à partir d’une chaîne de caractère donnée "ch"
de retourner son inverse.
(la version itérative) avec la boucle Pour
Merci d'avance
Salut,
Le principe de base c'est simplement de parcourir les caractères de la chaîne de départ depuis la fin vers le début (dans l'ordre inverse donc) et de les concaténer dans une nouvelle chaîne.
Pour créer la chaîne résultat tu peux :
- utiliser un tableau de char, de la même taille que la chaîne d'origine, puis de l'utilsiser en argument du constructeur de String pour créer la chaîne résultat
Il suffit d'opérer une relation simple entre l'index d'un caractère dans la chaîne d'origine et celui dans la chaîne résultat qui est (longueur de chaîne - index).- utiliser un java.lang.StringBuilder
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Une autre solution simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public String inverse(String source) { String resultat = ""; for (int i = 0 ; i < source.length() ; i++) resultat = source.charAt(i) + resultat; return resultat; }
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
Non. Il faut éviter de faire ça par concaténation, qui consomme plus de ressources. A chaque itération, on créé inutilement une instance de StringBuilder. En créant, une seule instance, on évite cette consommation excessive :
Par tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static String inverse(String source) { StringBuilder resultat = new StringBuilder(source.length()); for (int i = source.length-1 ; i >=0 ; i--) resultat.append(source.charAt(i)); return resultat; }
Et la solution non algorithmique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public static String inverse(String source) { char[] resultat = source.toCharArray(); for (int start=0, end=resultat.length-1; start<end; start++, end--) { char c = resultat[start]; resultat[start] = resultat[end]; resultat[end] = c; } return new String(resultat); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part String resultat = new StringBuilder(source).reverse().toString();
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Lol, j'aime beaucoup la dernière, quelle élégance !
Je ne connaissait pas StringBuilder, c'est bien pratique, en effet.
__________________________________
| +
| Sylvain Tournois - Création logicielle
|
| sylv.tournois.free.fr
|
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