CodeGym /Blog Java /Aleatoriu /Inversați un șir în Java
John Squirrels
Nivel
San Francisco

Inversați un șir în Java

Publicat în grup

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.
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION