Chuỗi đảo ngược là gì?
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ư StringBuilder và StringBuffer .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ư StringBuilder và StringBuffer 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 .
GO TO FULL VERSION