CodeGym /Java Blog /Toto sisi /在 Java 中反轉字符串
John Squirrels
等級 41
San Francisco

在 Java 中反轉字符串

在 Toto sisi 群組發布

什麼是反向字符串?

“開始讀取一個字符串,從最後一個字符開始一直讀到第一個字符。答對了!那是你的反轉字符串。”
下面是它的外觀演示。

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 中有不同的方法來反轉String。但是,Java 沒有為String類提供任何reverse()方法。天真的方法從使用for循環開始。傳統的迭代過程。稍後我們可以使用其他類(如StringBuilderStringBuffer )提供的reverse()方法來構建它。

方法 1 - 老派迭代方式


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(I LOVE 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;
檢查輸入字符串ie myString是否為空。如果發現 null,則按原樣返回輸入。我們不需要進一步進行。這稱為邊界案例處理以避免任何錯誤。

String reverseString = "";
聲明一個空字符串來存儲輸出。

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
使用普通的for循環。從輸入String的最後一個索引初始化迭代器i。訪問輸入字符串的最後一個索引並將其存儲在輸出字符串中。繼續重複,直到到達第 0 個索引或輸入字符串的開頭。

return reverseString;
返回reverseString並根據您的要求使用它。

方法二——String Builder類的使用

在 Java 中, String的內容一旦初始化就不能更改。因此,沒有可用於String 的reverse()方法。但是 Java 中的StringBuilderStringBuffer 等其他類確實包含可變或可變的內容。要在沒有循環的情況下反轉字符串,並使用內置的StringBuilderStringBuffer類,讓我們看下面的示例。

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

輸出

reverse(ABC) = CBA reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 reverse(Monday) = yadnoM reverse(I love CodeGym!) = !myGedoC evol I reverse(使用 StringBuilder 類反轉這個字符串.) = .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。為此,將輸入String傳遞給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.");
或者,您可以將String直接傳遞給StringBuilderStringBuffer

結論

到本文結束時,您必須熟悉 Strings 的反轉以及如何使用 StringBuilder 和 StringBuffer 的其他類來實現它。您可以根據自己的方便選擇任何方法。每當您感到卡住時,請隨時跳上去。到那時,繼續練習並繼續閃耀。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION