CodeGym /Blog Java /Ngẫu nhiên /Đảo ngược chuỗi trong Java

Đảo ngược chuỗi trong Java

Xuất bản trong nhóm

Chuỗi đảo ngược là gì?

“Bắt đầu đọc một Chuỗi bắt đầu từ ký tự cuối cùng cho đến ký tự đầu tiên. Chơi lô tô! đó là chuỗi đảo ngược của bạn."
Đây là một cuộc biểu tình về cách nó sẽ trông như thế nào.

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

Làm cách nào để đảo ngược một chuỗi trong Java?

Có nhiều cách khác nhau để đảo ngược Chuỗi trong Java. Tuy nhiên, Java không cung cấp bất kỳ phương thức reverse() nào cho lớp String . Cách tiếp cận ngây thơ bắt đầu bằng việc sử dụng vòng lặp for . Thủ tục lặp đi lặp lại truyền thống. Sau này, chúng ta có thể xây dựng nó bằng cách sử dụng các phương thức reverse() được cung cấp bởi các lớp khác như StringBuilderStringBuffer .

Phương pháp 1 - Cách lặp đi lặp lại của trường học cũ


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

đầu ra

đảo ngược(X Y Z) = Z Y X ngược lại(1 2 3) = 3 2 1 đảo ngược(TÔI YÊU JAVA!) = !AVAJ EVOL I đảo ngược(Nơi học Java yêu thích của tôi là CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM đảo ngược(Tên tôi là Lubaina Khan.) = .nahK aniabuL si eman yM đảo ngược(null) = null đảo ngược() =

Giải trình


public static String reverseInputString(String myString) { ... }
Phương thức reverseInputString lấy một Chuỗi đầu vào được gọi là myString .

if (myString == null)
	return myString;
Kiểm tra xem Chuỗi đầu vào tức là myString có rỗng không. Nếu tìm thấy null, hãy trả lại đầu vào như hiện tại. Chúng ta không cần phải tiếp tục. Điều này được gọi là xử lý trường hợp ranh giới để tránh bất kỳ lỗi nào.

String reverseString = "";
Khai báo một Chuỗi trống để lưu trữ đầu ra.

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
Sử dụng vòng lặp for bình thường . Khởi tạo iterator i từ chỉ mục cuối cùng của chuỗi đầu vào . Truy cập chỉ mục cuối cùng của chuỗi đầu vào và lưu trữ nó trong chuỗi đầu ra. Tiếp tục lặp lại cho đến khi bạn đạt đến chỉ số thứ 0 hoặc phần đầu của chuỗi đầu vào.

return reverseString;
Trả lại ReverseString và sử dụng nó theo yêu cầu của bạn.

Phương pháp 2 - Việc sử dụng lớp trình tạo chuỗi

Trong Java, không thể thay đổi nội dung của Chuỗi sau khi được khởi tạo. Do đó, không có phương thức reverse() nào khả dụng cho String s. Nhưng các lớp khác như StringBuilderStringBuffer trong Java có chứa nội dung có thể thay đổi hoặc thay đổi được. Để đảo ngược một chuỗi không có vòng lặp và sử dụng lớp StringBuilder hoặc StringBuffer tích hợp sẵn , hãy xem ví dụ bên dưới.

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

đầu ra

ngược lại(A B C) = C B A ngược lại (0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 đảo ngược(Thứ Hai) = yadnoM đảo ngược(Tôi yêu CodeGym!) = !myGedoC evol I đảo ngược(Đảo ngược chuỗi này bằng lớp StringBuilder.) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR đảo ngược(Đảo ngược chuỗi này bằng lớp StringBuffer.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR

Giải trình


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
Để đảo ngược Chuỗi đầu vào , bạn cần chuyển đổi nó thành StringBuilder . Đối với điều đó, hãy chuyển Chuỗi đầu vào tới hàm tạo StringBuilder .

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
Sau khi chuyển đổi String thành StringBuilder , bạn có thể lấy ngược lại và in đầu ra.

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Ngoài ra, bạn có thể chuyển một Chuỗi trực tiếp đến StringBuilder hoặc StringBuffer .

Phần kết luận

Đến cuối bài đăng này, bạn phải làm quen với việc đảo ngược Chuỗi và cách đạt được điều đó bằng cách sử dụng các lớp StringBuilder và StringBuffer khác. Bạn có thể chọn bất kỳ phương pháp nào theo sự thuận tiện của bạn. Hãy nhảy lên bất cứ khi nào bạn cảm thấy bế tắc. Cho đến lúc đó, hãy tiếp tục luyện tập và tiếp tục tỏa sáng.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION