import
java.util.Stack;
public
class
StringReverse {
public
static
String reverse1(String s) {
int
length = s.length();
if
(length <=
1
)
return
s;
String
left = s.substring(
0
,
length /
2
);
String
right = s.substring(length /
2
,
length);
return
reverse1(right) + reverse1(left);
}
public
static
String reverse2(String s) {
int
length = s.length();
String
reverse =
""
;
for
(
int
i =
0
;
i < length; i++)
reverse
= s.charAt(i) + reverse;
return
reverse;
}
public
static
String reverse3(String s) {
char
[]
array = s.toCharArray();
String
reverse =
""
;
for
(
int
i = array.length -
1
;
i >=
0
;
i--)
reverse
+= array[i];
return
reverse;
}
public
static
String reverse4(String s) {
return
new
StringBuffer(s).reverse().toString();
}
public
static
String reverse5(String orig) {
char
[]
s = orig.toCharArray();
int
n = s.length -
1
;
int
halfLength = n /
2
;
for
(
int
i =
0
;
i <= halfLength; i++) {
char
temp = s[i];
s[i]
= s[n - i];
s[n
- i] = temp;
}
return
new
String(s);
}
public
static
String reverse6(String s) {
char
[]
str = s.toCharArray();
int
begin =
0
;
int
end = s.length() -
1
;
while
(begin < end) {
str[begin]
= (
char
)
(str[begin] ^ str[end]);
str[end]
= (
char
)
(str[begin] ^ str[end]);
str[begin]
= (
char
)
(str[end] ^ str[begin]);
begin++;
end--;
}
return
new
String(str);
}
public
static
String reverse7(String s) {
char
[]
str = s.toCharArray();
Stack<Character>
stack =
new
Stack<Character>();
for
(
int
i =
0
;
i < str.length; i++)
stack.push(str[i]);
String
reversed =
""
;
for
(
int
i =
0
;
i < str.length; i++)
reversed
+= stack.pop();
return
reversed;
}
}