O que é uma string reversa?

“Comece a ler uma String começando de seu último caractere até o primeiro caractere. Bingo! essa foi a sua string invertida."
Aqui está uma demonstração de como vai ficar.

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

Como inverter uma string em Java?

Existem diferentes maneiras de reverter uma String em Java. No entanto, Java não fornece nenhum método reverse() para a classe String . A abordagem ingênua começa com o uso do loop for . O procedimento iterativo tradicional. Posteriormente, podemos construí-lo usando métodos reverse() oferecidos por outras classes como StringBuilder e StringBuffer .

Método 1 - A velha escola iterativa


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

Saída

reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL I reverse(Meu lugar favorito para aprender Java é CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(Meu nome é Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =

Explicação


public static String reverseInputString(String myString) { ... }
O método reverseInputString recebe uma String de entrada chamada myString .

if (myString == null)
	return myString;
Verifique se a String de entrada, ou seja, myString é nula. Se for nulo, retorne a entrada como está. Não precisamos prosseguir. Isso é chamado de tratamento de caso limite para evitar erros.

String reverseString = "";
Declare uma String vazia para armazenar a saída.

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
Use um loop for normal . Inicialize o iterador i do último índice da String de entrada . Acesse o último índice da string de entrada e armazene-o na string de saída. Continue repetindo até chegar ao 0º índice ou ao início da string de entrada.

return reverseString;
Retorne o reverseString e use-o de acordo com seus requisitos.

Método 2 - O uso da classe String Builder

Em Java, o conteúdo de uma String, uma vez inicializado, não pode ser alterado. Portanto, não há nenhum método reverse() disponível para String s. Mas outras classes como StringBuilder e StringBuffer em Java contêm conteúdos que são mutáveis ​​ou alteráveis. Para inverter uma string sem loops e usando a classe StringBuilder ou StringBuffer incorporada, vejamos um exemplo abaixo.

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

Saída

reverse(ABC) = CBA reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 reverse(Monday) = yadnoM reverse(Eu amo CodeGym!) = !myGedoC evol I reverse(Inverta esta String usando a Classe StringBuilder .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(Inverte esta String usando a classe StringBuffer.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR

Explicação


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
Para reverter a String de entrada , você precisa convertê-la em StringBuilder . Para isso, passe a String de entrada para o construtor StringBuilder .

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
Depois de converter String para StringBuilder , você pode obter o reverso e imprimir a saída.

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Como alternativa, você pode passar uma String diretamente para o StringBuilder ou StringBuffer .

Conclusão

Ao final deste post, você deve estar familiarizado com a reversão de Strings e como alcançá-la usando outras classes de StringBuilder e StringBuffer. Você pode escolher qualquer método de acordo com sua conveniência. Sinta-se à vontade para subir sempre que se sentir preso. Até então, continue praticando e continue brilhando.