什么是反向字符串?
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循环开始。传统的迭代过程。稍后我们可以使用其他类(如StringBuilder和StringBuffer )提供的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 中的StringBuilder和StringBuffer 等其他类确实包含可变或可变的内容。要在没有循环的情况下反转字符串,并使用内置的StringBuilder或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());
}
}
输出
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直接传递给StringBuilder或StringBuffer。
GO TO FULL VERSION