import java.util.Stack;
public classStringReverse{
/**
* @param s
* @return
*/
publicstatic 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);
}
/**
* @param s
* @return
*/
publicstatic String reverse2(String s){
int length= s.length();
String reverse= "";
for(int i= 0; i< length; i++){
reverse = s.charAt(i)+ reverse;
}
return reverse;
}
/**
* @param s
* @return
*/
publicstatic String reverse3(String s){
char[] array= s.toCharArray();
String reverse= "";
for(int i= array.length- 1; i>= 0; i--){
reverse += array[i];
}
return reverse;
}
/**
* @param s
* @return
*/
publicstatic String reverse4(String s){
returnnew StringBuffer(s).reverse().toString();
}
/**
* @param orig
* @return
*/
publicstatic 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;
}
returnnew String(s);
}
/**
* @param s
* @return
*/
publicstatic String reverse6(String s){
char[] str= s.toCharArray();
intbegin = 0;
intend = 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--;
}
returnnew String(str);
}
/**
* @param s
* @return
*/
publicstatic String reverse7(String s){
char[] str= s.toCharArray();
Stack<Character> stack= newStack<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;
}
/**
* @param args
*/
publicstatic void main(String[] args) {
System.out.println(reverse1("abcdefg"));
System.out.println(reverse2("abcdefg"));
System.out.println(reverse3("abcdefg"));
System.out.println(reverse4("abcdefg"));
System.out.println(reverse5("abcdefg"));
System.out.println(reverse6("abcdefg"));
System.out.println(reverse7("abcdefg"));
}
}