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
Version imprimable
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
Une autre solution simple :
Code:
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; }
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:
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:
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:String resultat = new StringBuilder(source).reverse().toString();
Lol, j'aime beaucoup la dernière, quelle élégance ! :D
Je ne connaissait pas StringBuilder, c'est bien pratique, en effet.