Java中怎么反转字符串
创始人
2024-12-21 11:02:27
0次

1. 使用 + (String连接) 操作符

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class ReverseWithStringConcat {public static void main(String[] args) {ReverseWithStringConcat concat = new ReverseWithStringConcat();concat.reverseWithStringConcat("javaguides");}private String reverseWithStringConcat(String input) {String output = new String();for (int i = (input.length() - 1); i >= 0; i--) {output += (input.charAt(i));}display(input, output);return output;}private void display(String input, String output) {System.out.println(" input string :: " + input);System.out.println(" output string :: " + output);}}

输出:

input string :: javaguidesoutput string :: sediugavaj

2. 使用 StringBuilder

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class ReverseWithStringBuilderBuiltinMethod {public static void main(String[] args) {ReverseWithStringBuilderBuiltinMethod builtinMethod = new ReverseWithStringBuilderBuiltinMethod();builtinMethod.reverseWithStringBuilderBuiltinMethod("javaguides");}public String reverseWithStringBuilderBuiltinMethod(String string) {final StringBuilder builder = new StringBuilder(string);display(string, builder.reverse().toString());return builder.reverse().toString();}private void display(String input, String output) {System.out.println(" input string :: " + input);System.out.println(" output string :: " + output);}}

输出:

input string :: javaguidesoutput string :: sediugavaj

3. 使用 String charAt 方法

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class ReverseWithStringChatAt{public static void main(String[] args) {ReverseWithStringChatAt reverseWithStringBuilder = new ReverseWithStringChatAt();reverseWithStringBuilder.reverseWithStringBuilder("javaguides");}public String reverseWithStringChatAt(String string) {final StringBuilder builder = new StringBuilder();for (int i = (string.length() - 1); i >= 0; i--) {builder.append(string.charAt(i));}display(string, builder.toString());return builder.toString();}private void display(String input, String output) {System.out.println(" input string :: " + input);System.out.println(" output string :: " + output);}}

输出:

input string :: javaguidesoutput string :: sediugavaj

4. 通过交换字符反转

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class ReverseStringWithSwaps {public static void main(String[] args) {ReverseStringWithSwaps stringWithSwaps = new ReverseStringWithSwaps();stringWithSwaps.reverseWithSwaps("javaguides");}public String reverseWithSwaps(String string) {final char[] array = string.toCharArray();final int length = array.length - 1;final int half = (int) Math.floor(array.length / 2);char c;for (int i = length; i >= half; i--) {c = array[length - i];array[length - i] = array[i];array[i] = c;}display(string, String.valueOf(array));return String.valueOf(array);}private void display(String input, String output) {System.out.println(" input string :: " + input);System.out.println(" output string :: " + output);}}

输出:

input string :: javaguidesoutput string :: sediugavaj

5. 使用 XOR(^) 操作符反转

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class ReverseStringWithXOR {public static void main(String[] args) {ReverseStringWithXOR stringWithXOR = new ReverseStringWithXOR();stringWithXOR.reverseWithXOR("javaguides");}public String reverseWithXOR(String string) {final char[] array = string.toCharArray();final int length = array.length;final int half = (int) Math.floor(array.length / 2);for (int i = 0; i < half; i++) {array[i] ^= array[length - i - 1];array[length - i - 1] ^= array[i];array[i] ^= array[length - i - 1];}display(string, String.valueOf(array));return String.valueOf(array);}private void display(String input, String output) {System.out.println(" input string :: " + input);System.out.println(" output string :: " + output);}}

输出:

input string :: javaguidesoutput string :: sediugavaj

6. 使用堆栈

package net.javaguides.corejava.string;import java.util.Stack;/*** * @author Ramesh Fadatare**/public class ReverseStringUsingStack {// Function to reverse a string in Java using a stack and character arraypublic static String reverse(String str) {// base case: if string is null or emptyif (str == null || str.equals(""))return str;// create an empty stack of charactersStack < Character > stack = new Stack < Character > ();// push every character of the given string into the stackchar[] ch = str.toCharArray();for (int i = 0; i < str.length(); i++)stack.push(ch[i]);// start from index 0int k = 0;// pop characters from the stack until it is emptywhile (!stack.isEmpty()) {// assign each popped character back to the character arraych[k++] = stack.pop();}// convert the character array into string and return itreturn String.copyValueOf(ch);}public static void main(String[] args) {String str = "javaguides";str = reverse(str); // string is immutableSystem.out.println("Reverse of the given string is : " + str);}}

输出:

Reverse of the given string is : sediugavaj

7. 使用 Collections reverse() 方法

package net.javaguides.corejava.string;import java.util.ArrayList;import java.util.Collections;import java.util.List;/*** * @author Ramesh Fadatare**/public class ReverseStringUsingCollectionsReverseMethod {// Function to reverse a string in Java using Collections.reverse()public static String reverse(String str) {// base case: if string is null or emptyif (str == null || str.equals(""))return str;// create an empty list of charactersList < Character > list = new ArrayList < Character > ();// push every character of the given string into itfor (char c: str.toCharArray())list.add(c);// reverse list using java.util.Collections reverse()Collections.reverse(list);// covert ArrayList into String using StringBuilder and return itStringBuilder builder = new StringBuilder(list.size());for (Character c: list)builder.append(c);return builder.toString();}public static void main(String[] args) {String str = "Java Guides";// String is immutablestr = reverse(str);System.out.println("Reverse of the given string is : " + str);}}

输出:

Reverse of the given string is : sediuG avaJ

8. 使用 Byte 数组

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class ReverseStringUsingByteArray {// Function to reverse a string in Java using byte arraypublic static String reverse(String str) {// return if string is null or emptyif (str == null || str.equals(""))return str;// convert string into bytesbyte[] bytes = str.getBytes();// start from the two end points l and h of the given string// and increment l & decrement h at each iteration of the loop// until two end-points intersect (l >= h)for (int l = 0, h = str.length() - 1; l < h; l++, h--) {// Swap values at l and hbyte temp = bytes[l];bytes[l] = bytes[h];bytes[h] = temp;}// convert byte array back into the stringreturn new String(bytes);}public static void main(String[] args) {String str = "Java Guides";// String is immutablestr = reverse(str);System.out.println("Reverse of the given string is : " + str);}}

输出:

Reverse of the given string is : sediuG avaJ

9. 使用 substring() 方法

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class UsingSubStringFunction {// Function to reverse a string in Java using recursionprivate static String reverse(String str) {// base case: if string is null or emptyif (str == null || str.equals(""))return str;// last character + recurse for remaining stringreturn str.charAt(str.length() - 1) + reverse(str.substring(0, str.length() - 1));}public static void main(String[] args) {String str = "javaguides";// string is immutablestr = reverse(str);System.out.println("Reverse of the given string is : " + str);}}

输出:

Reverse of the given string is : sediugavaj

10. 使用递归

package net.javaguides.corejava.string;/*** * @author Ramesh Fadatare**/public class UsingRecursion {static int i = 0;// Recursive function to reverse a string in Java using static variableprivate static void reverse(char[] str, int k) {// if we have reached the end of the stringif (k == str.length)return;// recurse for next characterreverse(str, k + 1);if (i <= k) {char temp = str[k];str[k] = str[i];str[i++] = temp;}}public static String reverse(String str) {// base case: if string is null or emptyif (str == null || str.equals(""))return str;// convert string into a character arraychar[] A = str.toCharArray();// reverse character arrayreverse(A, 0);// convert character array into the stringreturn String.copyValueOf(A);}public static void main(String[] args) {String str = "Java Guides";// string is immutablestr = reverse(str);System.out.println("Reverse of the given string is : " + str);}}

输出:

Reverse of the given string is : sediuG avaJ

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...