Java中经常会用到将字符串进行反转的时候,程序员孔乙己总结了7种反转方法,如下:
//方法1 递归方法
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); }
//方法2 通过 charAt(int index)返回char值进行字符串拼接
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; }
//方法3 把字符串转换成字符数组倒叙拼接然后返回值
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; }
//方法4 调用StringBuffer中的reverse方法
public static String reverse4(String s) { return new StringBuffer(s).reverse().toString(); }
//方法5 把字符串转换成字符数组首位对调位置
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); }
//方法6
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);
}
//方法7
import java.util.Stack;
public class StringReverse {
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;
}
}