1 import java.util.Stack;
2
3 public class StringReverse {
4
5 public static String reverse1(String s) {
6 int length = s.length();
7 if (length <= 1)
8 return s;
9 String left = s.substring(0, length / 2);
10 String right = s.substring(length / 2, length);
11 return reverse1(right) + reverse1(left);
12 }
13
14 public static String reverse2(String s) {
15 int length = s.length();
16 String reverse = "";
17 for (int i = 0; i < length; i++)
18 reverse = s.charAt(i) + reverse;
19 return reverse;
20 }
21
22 public static String reverse3(String s) {
23 char[] array = s.toCharArray();
24 String reverse = "";
25 for (int i = array.length - 1; i >= 0; i--)
26 reverse += array[i];
27
28 return reverse;
29 }
30
31 public static String reverse4(String s) {
32 return new StringBuffer(s).reverse().toString();
33 }
34
35 public static String reverse5(String orig) {
36 char[] s = orig.toCharArray();
37 int n = s.length - 1;
38 int halfLength = n / 2;
39 for (int i = 0; i <= halfLength; i++) {
40 char temp = s[i];
41 s[i] = s[n - i];
42 s[n - i] = temp;
43 }
44 return new String(s);
45 }
46
47 public static String reverse6(String s) {
48
49 char[] str = s.toCharArray();
50
51 int begin = 0;
52 int end = s.length() - 1;
53
54 while (begin < end) {
55 str[begin] = (char) (str[begin] ^ str[end]);
56 str[end] = (char) (str[begin] ^ str[end]);
57 str[begin] = (char) (str[end] ^ str[begin]);
58 begin++;
59 end--;
60 }
61
62 return new String(str);
63 }
64
65 public static String reverse7(String s) {
66 char[] str = s.toCharArray();
67 Stack<Character> stack = new Stack<Character>();
68 for (int i = 0; i < str.length; i++)
69 stack.push(str[i]);
70
71 String reversed = "";
72 for (int i = 0; i < str.length; i++)
73 reversed += stack.pop();
74
75 return reversed;
76 }
77
78 }