CodeGym /Blog Java /Random-FR /Inverser une chaîne en Java
Auteur
John Selawsky
Senior Java Developer and Tutor at LearningTree

Inverser une chaîne en Java

Publié dans le groupe Random-FR

Qu'est-ce qu'une chaîne inversée ?

"Commencez à lire une chaîne en commençant par son dernier caractère jusqu'au premier caractère. Bingo ! c'était ta chaîne inversée."
Voici une démonstration de ce à quoi cela ressemblera.

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 .

Conclusion

À la fin de cet article, vous devez être familiarisé avec l'inversion de Strings et comment y parvenir en utilisant d'autres classes de StringBuilder et StringBuffer. Vous pouvez choisir n'importe quelle méthode selon votre convenance. N'hésitez pas à sauter dessus chaque fois que vous vous sentez coincé. Jusque-là, continuez à pratiquer et continuez à briller.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION