Ce este un șir invers?

„Începeți să citiți un șir începând de la ultimul său caracter până la primul caracter. Bingo! asta a fost șirul tău invers.”
Iată o demonstrație a cum va arăta.

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

Cum se inversează un șir în Java?

Există diferite moduri de a inversa un șir în Java. Cu toate acestea, Java nu oferă nicio metodă inversă () pentru clasa String . Abordarea naivă începe cu utilizarea buclei for . Procedura tradițională iterativă. Mai târziu îl putem construi folosind metode reverse() oferite de alte clase precum StringBuilder și StringBuffer .

Metoda 1 - Calea iterativă a școlii vechi


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

Ieșire

reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL I reverse(My favorite place to learn Java is CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(My name is Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =

Explicaţie


public static String reverseInputString(String myString) { ... }
Metoda reverseInputString preia un șir de intrare numit myString .

if (myString == null)
	return myString;
Verificați dacă șirul de intrare, adică myString este nul. Dacă este găsit nul, returnați intrarea așa cum este. Nu trebuie să continuăm. Aceasta se numește tratarea cazurilor limită pentru a evita orice erori.

String reverseString = "";
Declarați un șir gol pentru a stoca rezultatul.

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
Utilizați o buclă for normală . Inițializați iteratorul i din ultimul index al String de intrare . Accesați ultimul index al șirului de intrare și stocați-l în șirul de ieșire. Continuați să repetați până când ajungeți la indicele 0 sau la începutul șirului de intrare.

return reverseString;
Returnați reverseString și utilizați-l conform cerințelor dvs.

Metoda 2 - Utilizarea clasei String Builder

În Java, conținutul unui șir de caractere odată inițializat nu poate fi modificat. Prin urmare, nu există o metodă reverse() disponibilă pentru String s. Dar alte clase, cum ar fi StringBuilder și StringBuffer în Java, conțin conținut care este mutabil sau schimbător. Pentru a inversa un șir fără bucle și folosind clasa încorporată StringBuilder sau StringBuffer , să ne uităm la un exemplu de mai jos.

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

Ieșire

invers (ABC) = CBA invers (0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 invers (luni) = yadnoM invers (Iubesc CodeGym!) = !myGedoC evol I invers (Inversa acest String folosind StringBuilder Class .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(Inversați acest șir folosind StringBuffer Class.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR

Explicaţie


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
Pentru a inversa intrarea String, trebuie să o convertiți în StringBuilder . Pentru aceasta, treceți String de intrare constructorului StringBuilder .

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
După conversia String în StringBuilder , puteți obține reversul și imprima rezultatul.

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Alternativ, puteți transmite un String direct la StringBuilder sau StringBuffer .

Concluzie

Până la sfârșitul acestei postări, trebuie să fiți familiarizat cu inversarea șirurilor și cum să o realizați folosind alte clase de StringBuilder și StringBuffer. Puteți alege orice metodă în funcție de confortul dvs. Simțiți-vă liber să urcați pe el oricând vă simțiți blocați. Până atunci, continuă să exersezi și să strălucești.