CodeGym /Java Blog /Random-IT /Invertire una stringa in Java
John Squirrels
Livello 41
San Francisco

Invertire una stringa in Java

Pubblicato nel gruppo Random-IT

Cos'è una stringa inversa?

“Inizia a leggere una stringa a partire dal suo ultimo carattere fino al primo carattere. Tombola! quella era la tua corda invertita."
Ecco una dimostrazione di come sarà.

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";

Come invertire una stringa in Java?

Esistono diversi modi per invertire una stringa in Java. Tuttavia, Java non fornisce alcun metodo reverse() per la classe String . L'approccio ingenuo inizia con l'utilizzo del ciclo for . Il tradizionale procedimento iterativo. Successivamente possiamo crearlo utilizzando i metodi reverse() offerti da altre classi come StringBuilder e StringBuffer .

Metodo 1 - Il modo iterativo della vecchia scuola


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));
	}
}

Produzione

reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL I reverse(Il mio posto preferito per imparare Java è CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(Mi chiamo Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =

Spiegazione


public static String reverseInputString(String myString) { ... }
Il metodo reverseInputString accetta una stringa di input chiamata myString .

if (myString == null)
	return myString;
Controlla se l'input String ie myString è nullo. Se trovato null, restituisce l'input così com'è. Non abbiamo bisogno di procedere oltre. Questa è chiamata gestione dei casi limite per evitare errori.

String reverseString = "";
Dichiara una stringa vuota per archiviare l'output.

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
Usa un normale ciclo for . Inizializza l'iteratore i dall'ultimo indice dell'input String . Accedi all'ultimo indice della stringa di input e memorizzalo nella stringa di output. Continua a ripetere finché non raggiungi lo 0° indice o l'inizio della stringa di input.

return reverseString;
Restituisci il reverseString e usalo secondo i tuoi requisiti.

Metodo 2 - L'uso della classe String Builder

In Java, il contenuto di una stringa una volta inizializzato non può essere modificato. Pertanto, non è disponibile alcun metodo reverse() per String s. Ma altre classi come StringBuilder e StringBuffer in Java contengono contenuti che sono mutabili o modificabili. Per invertire una stringa senza loop e utilizzando la classe StringBuilder o StringBuffer incorporata, diamo un'occhiata a un esempio di seguito.

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());
	}
}

Produzione

reverse(ABC) = CBA reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 reverse(Lunedì) = yadnoM reverse(Adoro CodeGym!) = !myGedoC evol I reverse(Inverti questa stringa usando la classe StringBuilder .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(Inverti questa stringa utilizzando la classe StringBuffer.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR

Spiegazione


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
Per invertire l'input String è necessario convertirlo in StringBuilder . Per questo, passa l'input String al costruttore StringBuilder .

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
Dopo aver convertito String in StringBuilder , puoi ottenere il contrario e stampare l'output.

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
In alternativa, puoi passare una stringa direttamente a StringBuilder o StringBuffer .

Conclusione

Alla fine di questo post, devi avere familiarità con l'inversione delle stringhe e come ottenerla utilizzando altre classi di StringBuilder e StringBuffer. Puoi scegliere qualsiasi metodo secondo la tua convenienza. Sentiti libero di salire ogni volta che ti senti bloccato. Fino ad allora, continua a esercitarti e continua a brillare.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION