Qu'est-ce qu'une chaîne inversée ?
Input String = "X Y Z";
Output String = "Z Y X"
Input String = "1 2 3";
Output String = "3 2 1";
Input String = "I love Java!";
Output String = "!avaJ evol I";
Comment inverser une chaîne en Java ?
Il existe différentes façons d'inverser une chaîne en Java. Cependant, Java ne fournit aucune méthode reverse() pour la classe String . L'approche naïve commence par l'utilisation de la boucle for . La procédure itérative traditionnelle. Plus tard, nous pouvons le construire en utilisant les méthodes reverse() proposées par d'autres classes comme StringBuilder et StringBuffer .Méthode 1 - La méthode itérative de la vieille école
public class StringReversal {
public static String reverseInputString(String myString) {
if (myString == null)
return myString;
String reverseString = "";
for (int i = myString.length() - 1; i >= 0; i--) {
reverseString = reverseString + myString.charAt(i);
}
return reverseString;
}
public static void main(String[] args) {
String myString1 = "X Y Z";
System.out.println("reverse(" + myString1 + ") = " + reverseInputString(myString1));
String myString2 = "1 2 3";
System.out.println("reverse(" + myString2 + ") = " + reverseInputString(myString2));
String myString3 = "I LOVE JAVA!";
System.out.println("reverse(" + myString3 + ") = " + reverseInputString(myString3));
String myString4 = "My favourite place to learn Java is CodeGym.";
System.out.println("reverse(" + myString4 + ") = " + reverseInputString(myString4));
String myString5 = "My name is Lubaina Khan.";
System.out.println("reverse(" + myString5 + ") = " + reverseInputString(myString5));
// Boundary Case to see what happens if a String is null
String myString6 = null;
System.out.println("reverse(" + myString6 + ") = " + reverseInputString(myString6));
// Boundary Case to see what happens if a String is empty
String myString7 = "";
System.out.println("reverse(" + myString7 + ") = " + reverseInputString(myString7));
}
}
Sortir
reverse(XYZ) = ZYX
reverse(1 2 3) = 3 2 1
reverse(I LOVE JAVA!) = !AVAJ EVOL I
reverse(Mon endroit préféré pour apprendre Java est CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM
reverse(Mon nom est Lubaina Khan.) = .nahK aniabuL si eman yM
reverse(null) = null
reverse() =
Explication
public static String reverseInputString(String myString) { ... }
La méthode reverseInputString prend une chaîne d'entrée appelée myString .
if (myString == null)
return myString;
Vérifiez si la chaîne d'entrée, c'est-à-dire myString, est nulle. S'il est trouvé nul, renvoie l'entrée telle quelle. Nous n'avons pas besoin d'aller plus loin. C'est ce qu'on appelle la gestion des cas limites pour éviter toute erreur.
String reverseString = "";
Déclarez une chaîne vide pour stocker la sortie.
for (int i = myString.length() - 1; i >= 0; i--) {
reverseString = reverseString + myString.charAt(i);
}
Utilisez une boucle for normale . Initialise l'itérateur i à partir du dernier index de l'entrée String . Accédez au dernier index de la chaîne d'entrée et stockez-le dans la chaîne de sortie. Continuez à répéter jusqu'à ce que vous atteigniez le 0ème index ou le début de la chaîne d'entrée.
return reverseString;
Renvoyez le reverseString et utilisez-le selon vos besoins.
Méthode 2 - L'utilisation de la classe String Builder
En Java, le contenu d'une chaîne une fois initialisée ne peut pas être modifié. Par conséquent, il n'y a pas de méthode reverse() disponible pour String s. Mais d'autres classes comme StringBuilder et StringBuffer en Java contiennent des contenus modifiables ou modifiables. Pour inverser une chaîne sans boucles et en utilisant la classe intégrée StringBuilder ou StringBuffer , regardons un exemple ci-dessous.
public class StringBuilderReversal {
public static void main(String[] args) {
String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
String input2 = "0 1 2 2 3 3 3";
StringBuilder inputText2 = new StringBuilder(input2);
System.out.println("reverse(" + inputText2 + ") = " + inputText2.reverse());
String input3 = "Monday";
StringBuilder inputText3 = new StringBuilder(input3);
System.out.println("reverse(" + inputText3 + ") = " + inputText3.reverse());
String input4 = "I love CodeGym!";
StringBuilder inputText4 = new StringBuilder(input4);
System.out.println("reverse(" + inputText4 + ") = " + inputText4.reverse());
// ReverseString using the StringBuilder class
StringBuilder inputText5 = new StringBuilder("Reverse this String using StringBuilder Class.");
System.out.println("reverse(" + inputText5 + ") = " + inputText5.reverse());
// ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
System.out.println("reverse(" + inputText6 + ") = " + inputText6.reverse());
}
}
Sortir
reverse(ABC) = CBA
reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0
reverse(Monday) = yadnoM
reverse(I love CodeGym!) = !myGedoC evol I
reverse(Reverse this String using StringBuilder Class.) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR
reverse(Reverse this String using StringBuffer Class.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR
Explication
String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
Pour inverser la chaîne d'entrée , vous devez la convertir en StringBuilder . Pour cela, passez la chaîne d'entrée au constructeur StringBuilder .
System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
Après avoir converti String en StringBuilder , vous pouvez obtenir son inverse et imprimer la sortie.
// ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Alternativement, vous pouvez passer un String directement au StringBuilder ou au StringBuffer .
GO TO FULL VERSION