Java反轉(zhuǎn)字符串的10種方法
在這篇文章中,我們會討論10種用Java反轉(zhuǎn)字符串的方法,通過10個Java程序反轉(zhuǎn)字符串。例如,把字符串“javaguides” 反轉(zhuǎn)為 “sediugavaj”。
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 :: javaguides output 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 :: javaguides output 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 :: javaguides output string :: sediugavaj
4. 通過交換字符反轉(zhuǎn)
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 :: javaguides output string :: sediugavaj
5. 使用 XOR(^) 操作符反轉(zhuǎn)
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 :: javaguides output 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 array public static String reverse(String str) { // base case: if string is null or empty if (str == null || str.equals("")) return str; // create an empty stack of characters Stack < Character > stack = new Stack < Character > (); // push every character of the given string into the stack char[] ch = str.toCharArray(); for (int i = 0; i < str.length(); i++) stack.push(ch[i]); // start from index 0 int k = 0; // pop characters from the stack until it is empty while (!stack.isEmpty()) { // assign each popped character back to the character array ch[k++] = stack.pop(); } // convert the character array into string and return it return String.copyValueOf(ch); } public static void main(String[] args) { String str = "javaguides"; str = reverse(str); // string is immutable System.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 empty if (str == null || str.equals("")) return str; // create an empty list of characters List < Character > list = new ArrayList < Character > (); // push every character of the given string into it for (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 it StringBuilder 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 immutable str = reverse(str); System.out.println("Reverse of the given string is : " + str); } }
輸出:
Reverse of the given string is : sediuG avaJ
8. 使用 Byte 數(shù)組
package net.javaguides.corejava.string; /** * * @author Ramesh Fadatare * */ public class ReverseStringUsingByteArray { // Function to reverse a string in Java using byte array public static String reverse(String str) { // return if string is null or empty if (str == null || str.equals("")) return str; // convert string into bytes byte[] 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 h byte temp = bytes[l]; bytes[l] = bytes[h]; bytes[h] = temp; } // convert byte array back into the string return new String(bytes); } public static void main(String[] args) { String str = "Java Guides"; // String is immutable str = 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 recursion private static String reverse(String str) { // base case: if string is null or empty if (str == null || str.equals("")) return str; // last character + recurse for remaining string return str.charAt(str.length() - 1) + reverse(str.substring(0, str.length() - 1)); } public static void main(String[] args) { String str = "javaguides"; // string is immutable str = 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 variable private static void reverse(char[] str, int k) { // if we have reached the end of the string if (k == str.length) return; // recurse for next character reverse(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 empty if (str == null || str.equals("")) return str; // convert string into a character array char[] A = str.toCharArray(); // reverse character array reverse(A, 0); // convert character array into the string return String.copyValueOf(A); } public static void main(String[] args) { String str = "Java Guides"; // string is immutable str = reverse(str); System.out.println("Reverse of the given string is : " + str); } }
輸出:
Reverse of the given string is : sediuG avaJ
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄詳細(xì)流程
SSO的定義是在多個應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。單點(diǎn)登錄是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一,本文給大家介紹springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄功能,感興趣的朋友一起看看吧2021-10-10Java實(shí)現(xiàn)單例模式的五種方式總結(jié)
這篇文章主要介紹了如何實(shí)現(xiàn)一個單例模式,包括構(gòu)造器私有化、提供靜態(tài)私有變量和公共獲取實(shí)例接口,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01解析ConcurrentHashMap: put方法源碼分析
ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識,一起看看吧2021-06-06SpringBoot引入Redis報org.springframework.data.redis.core.RedisT
這篇文章主要介紹了SpringBoot引入Redis報org.springframework.data.redis.core.RedisTemplate類找不到錯誤問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09Java String字符串和Unicode字符相互轉(zhuǎn)換代碼詳解
這篇文章主要介紹了Java String字符串和Unicode字符相互轉(zhuǎn)換代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05SpringCloud Webflux過濾器增加header傳遞方式
這篇文章主要介紹了SpringCloud Webflux過濾器增加header傳遞方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02