Java字符串反转

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

  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class ReverseWithStringConcat {
  8. public static void main(String[] args) {
  9. ReverseWithStringConcat concat = new ReverseWithStringConcat();
  10. concat.reverseWithStringConcat("javaguides");
  11. }
  12. private String reverseWithStringConcat(String input) {
  13. String output = new String();
  14. for (int i = (input.length() - 1); i >= 0; i--) {
  15. output += (input.charAt(i));
  16. }
  17. display(input, output);
  18. return output;
  19. }
  20. private void display(String input, String output) {
  21. System.out.println(" input string :: " + input);
  22. System.out.println(" output string :: " + output);
  23. }
  24. }

 

输出:

1

2

input string :: javaguides

output string :: sediugavaj

2. 使用 StringBuilder

 

  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class ReverseWithStringBuilderBuiltinMethod {
  8. public static void main(String[] args) {
  9. ReverseWithStringBuilderBuiltinMethod builtinMethod = new ReverseWithStringBuilderBuiltinMethod();
  10. builtinMethod.reverseWithStringBuilderBuiltinMethod("javaguides");
  11. }
  12. public String reverseWithStringBuilderBuiltinMethod(String string) {
  13. final StringBuilder builder = new StringBuilder(string);
  14. display(string, builder.reverse().toString());
  15. return builder.reverse().toString();
  16. }
  17. private void display(String input, String output) {
  18. System.out.println(" input string :: " + input);
  19. System.out.println(" output string :: " + output);
  20. }
  21. }

 

输出:

1

2

input string :: javaguides

output string :: sediugavaj

3. 使用 String charAt 方法

 
  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class ReverseWithStringChatAt{
  8. public static void main(String[] args) {
  9. ReverseWithStringChatAt reverseWithStringBuilder = new ReverseWithStringChatAt();
  10. reverseWithStringBuilder.reverseWithStringBuilder("javaguides");
  11. }
  12. public String reverseWithStringChatAt(String string) {
  13. final StringBuilder builder = new StringBuilder();
  14. for (int i = (string.length() - 1); i >= 0; i--) {
  15. builder.append(string.charAt(i));
  16. }
  17. display(string, builder.toString());
  18. return builder.toString();
  19. }
  20. private void display(String input, String output) {
  21. System.out.println(" input string :: " + input);
  22. System.out.println(" output string :: " + output);
  23. }
  24. }

 

输出:

1

2

input string :: javaguides

output string :: sediugavaj

4. 通过交换字符反转

  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class ReverseStringWithSwaps {
  8. public static void main(String[] args) {
  9. ReverseStringWithSwaps stringWithSwaps = new ReverseStringWithSwaps();
  10. stringWithSwaps.reverseWithSwaps("javaguides");
  11. }
  12. public String reverseWithSwaps(String string) {
  13. final char[] array = string.toCharArray();
  14. final int length = array.length - 1;
  15. final int half = (int) Math.floor(array.length / 2);
  16. char c;
  17. for (int i = length; i >= half; i--) {
  18. c = array[length - i];
  19. array[length - i] = array[i];
  20. array[i] = c;
  21. }
  22. display(string, String.valueOf(array));
  23. return String.valueOf(array);
  24. }
  25. private void display(String input, String output) {
  26. System.out.println(" input string :: " + input);
  27. System.out.println(" output string :: " + output);
  28. }
  29. }

 

输出:

1

2

input string :: javaguides

output string :: sediugavaj

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

  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class ReverseStringWithXOR {
  8. public static void main(String[] args) {
  9. ReverseStringWithXOR stringWithXOR = new ReverseStringWithXOR();
  10. stringWithXOR.reverseWithXOR("javaguides");
  11. }
  12. public String reverseWithXOR(String string) {
  13. final char[] array = string.toCharArray();
  14. final int length = array.length;
  15. final int half = (int) Math.floor(array.length / 2);
  16. for (int i = 0; i < half; i++) {
  17. array[i] ^= array[length - i - 1];
  18. array[length - i - 1] ^= array[i];
  19. array[i] ^= array[length - i - 1];
  20. }
  21. display(string, String.valueOf(array));
  22. return String.valueOf(array);
  23. }
  24. private void display(String input, String output) {
  25. System.out.println(" input string :: " + input);
  26. System.out.println(" output string :: " + output);
  27. }
  28. }

 

输出:

1

2

input string :: javaguides

output string :: sediugavaj

6. 使用堆栈

 
  1. package net.javaguides.corejava.string;
  2. import java.util.Stack;
  3. /**
  4. *
  5. * @author Ramesh Fadatare
  6. *
  7. */
  8. public class ReverseStringUsingStack {
  9. // Function to reverse a string in Java using a stack and character array
  10. public static String reverse(String str) {
  11. // base case: if string is null or empty
  12. if (str == null || str.equals(""))
  13. return str;
  14. // create an empty stack of characters
  15. Stack < Character > stack = new Stack < Character > ();
  16. // push every character of the given string into the stack
  17. char[] ch = str.toCharArray();
  18. for (int i = 0; i < str.length(); i++)
  19. stack.push(ch[i]);
  20. // start from index 0
  21. int k = 0;
  22. // pop characters from the stack until it is empty
  23. while (!stack.isEmpty()) {
  24. // assign each popped character back to the character array
  25. ch[k++] = stack.pop();
  26. }
  27. // convert the character array into string and return it
  28. return String.copyValueOf(ch);
  29. }
  30. public static void main(String[] args) {
  31. String str = "javaguides";
  32. str = reverse(str); // string is immutable
  33. System.out.println("Reverse of the given string is : " + str);
  34. }
  35. }

 

输出:

1

Reverse of the given string is : sediugavaj

7. 使用 Collections reverse() 方法

 
  1. package net.javaguides.corejava.string;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.List;
  5. /**
  6. *
  7. * @author Ramesh Fadatare
  8. *
  9. */
  10. public class ReverseStringUsingCollectionsReverseMethod {
  11. // Function to reverse a string in Java using Collections.reverse()
  12. public static String reverse(String str) {
  13. // base case: if string is null or empty
  14. if (str == null || str.equals(""))
  15. return str;
  16. // create an empty list of characters
  17. List < Character > list = new ArrayList < Character > ();
  18. // push every character of the given string into it
  19. for (char c: str.toCharArray())
  20. list.add(c);
  21. // reverse list using java.util.Collections reverse()
  22. Collections.reverse(list);
  23. // covert ArrayList into String using StringBuilder and return it
  24. StringBuilder builder = new StringBuilder(list.size());
  25. for (Character c: list)
  26. builder.append(c);
  27. return builder.toString();
  28. }
  29. public static void main(String[] args) {
  30. String str = "Java Guides";
  31. // String is immutable
  32. str = reverse(str);
  33. System.out.println("Reverse of the given string is : " + str);
  34. }
  35. }

 

输出:

1

Reverse of the given string is : sediuG avaJ

8. 使用 Byte 数组

 
  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class ReverseStringUsingByteArray {
  8. // Function to reverse a string in Java using byte array
  9. public static String reverse(String str) {
  10. // return if string is null or empty
  11. if (str == null || str.equals(""))
  12. return str;
  13. // convert string into bytes
  14. byte[] bytes = str.getBytes();
  15. // start from the two end points l and h of the given string
  16. // and increment l & decrement h at each iteration of the loop
  17. // until two end-points intersect (l >= h)
  18. for (int l = 0, h = str.length() - 1; l < h; l++, h--) {
  19. // Swap values at l and h
  20. byte temp = bytes[l];
  21. bytes[l] = bytes[h];
  22. bytes[h] = temp;
  23. }
  24. // convert byte array back into the string
  25. return new String(bytes);
  26. }
  27. public static void main(String[] args) {
  28. String str = "Java Guides";
  29. // String is immutable
  30. str = reverse(str);
  31. System.out.println("Reverse of the given string is : " + str);
  32. }
  33. }

 

输出:

1

Reverse of the given string is : sediuG avaJ

9. 使用 substring() 方法

 

 
  1. packagenet.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. publicclassUsingSubStringFunction {
  8. // Function to reverse a string in Java using recursion
  9. privatestaticString reverse(String str) {
  10. // base case: if string is null or empty
  11. if(str ==null|| str.equals(""))
  12. returnstr;
  13. // last character + recurse for remaining string
  14. returnstr.charAt(str.length() -1) + reverse(str.substring(0, str.length() -1));
  15. }
  16. publicstaticvoidmain(String[] args) {
  17. String str ="javaguides";
  18. // string is immutable
  19. str = reverse(str);
  20. System.out.println("Reverse of the given string is : "+ str);
  21. }
  22. }

 

输出:

1

Reverse of the given string is : sediugavaj

10. 使用递归

 
  1. package net.javaguides.corejava.string;
  2. /**
  3. *
  4. * @author Ramesh Fadatare
  5. *
  6. */
  7. public class UsingRecursion {
  8. static int i = 0;
  9. // Recursive function to reverse a string in Java using static variable
  10. private static void reverse(char[] str, int k) {
  11. // if we have reached the end of the string
  12. if (k == str.length)
  13. return;
  14. // recurse for next character
  15. reverse(str, k + 1);
  16. if (i <= k) {
  17. char temp = str[k];
  18. str[k] = str[i];
  19. str[i++] = temp;
  20. }
  21. }
  22. public static String reverse(String str) {
  23. // base case: if string is null or empty
  24. if (str == null || str.equals(""))
  25. return str;
  26. // convert string into a character array
  27. char[] A = str.toCharArray();
  28. // reverse character array
  29. reverse(A, 0);
  30. // convert character array into the string
  31. return String.copyValueOf(A);
  32. }
  33. public static void main(String[] args) {
  34. String str = "Java Guides";
  35. // string is immutable
  36. str = reverse(str);
  37. System.out.println("Reverse of the given string is : " + str);
  38. }
  39. }

输出:

1

Reverse of the given string is : sediuG avaJ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值