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; |
| } |
| |
| } |