CodeGym /Java блог /Случаен /Обръщане на низ в Java
John Squirrels
Ниво
San Francisco

Обръщане на низ в Java

Публикувано в групата

Какво е обратен низ?

„Започнете да четете низ, като започнете от последния му знак до първия знак. Бинго! това беше вашият обърнат низ."
Ето демонстрация How ще изглежда.

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

Как да обърна низ в Java?

Има различни начини за обръщане на низ в Java. Java обаче не предоставя ниHowъв метод reverse() за клас String . Наивният подход започва с използването на цикъл for . Традиционната итеративна proceduresа. По-късно можем да го изградим, като използваме reverse() методи, предлагани от други класове като StringBuilder и StringBuffer .

Метод 1 - Старият учorщен итеративен начин


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

Изход

reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(ОБИЧАМ JAVA!) = !AVAJ EVOL I reverse(Любимото ми място за изучаване на Java е CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(Казвам се Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =

Обяснение


public static String reverseInputString(String myString) { ... }
Методът reverseInputString приема входен низ , наречен myString .

if (myString == null)
	return myString;
Проверете дали входният низ, т.е. myString, е нула. Ако се намери нула, връща въведеното, Howто е. Не е нужно да продължаваме по-нататък. Това се нарича обработка на гранични случаи, за да се избегнат всяHowви грешки.

String reverseString = "";
Декларирайте празен низ за съхраняване на изхода.

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
Използвайте нормален for цикъл. Инициализирайте итератора i от последния индекс на входния низ . Достъп до последния индекс на входния низ и го съхранете в изходния низ. Продължете да повтаряте, докато стигнете до 0-ия индекс or началото на въведения низ.

return reverseString;
Върнете обратния низ и го използвайте според вашите изисквания.

Метод 2 - Използване на класа за създаване на низове

В Java съдържанието на низ , веднъж инициализиран, не може да бъде променено. Следователно, няма наличен метод reverse() за String s. Но други класове като StringBuilder и StringBuffer в Java съдържат съдържание, което може да се променя or променя. За да обърнете низ без цикли и с помощта на вградения клас StringBuilder or StringBuffer , нека разгледаме пример по-долу.

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

Изход

реверс(ABC) = CBA реверс(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 реверс(понеделник) = yadnoM реверс(Обичам CodeGym!) = !myGedoC evol I реверс(Обърнете този низ с помощта на StringBuilder Class .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(Обръщане на този низ с помощта на StringBuffer клас.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR

Обяснение


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
За да обърнете входния низ, трябва да го конвертирате в StringBuilder . За целта предайте входния низ към конструктора StringBuilder .

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
След като преобразувате String в StringBuilder , можете да получите неговата обратна страна и да отпечатате изхода.

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Като алтернатива можете да предадете низ директно към StringBuilder or StringBuffer .

Заключение

До края на тази публикация трябва да сте запознати с обръщането на низове и How да го постигнете с помощта на други класове на StringBuilder и StringBuffer. Можете да изберете всеки метод според вашето удобство. Чувствайте се свободни да се качвате винаги, когато се почувствате блокирани. Дотогава продължавайте да тренирате и продължавайте да блестите.
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION