StringBuffer的reverse
new StringBuffer(s).reverse().toString()
首尾三次异或
for(;start<end;start++,end--) {
c[start] ^= c[end];
c[end] ^= c[start];
c[start] ^= c[end];
}
倒序拼接
for (int i = s.length() - 1; i >= 0; i--) {
sb.append(s.charAt(i));
}
栈的先进后出
StringBuffer sb = new StringBuffer();
Stack stack = new Stack();
for (int i = 0; i < s.length(); i++) {
stack.push(s.charAt(i));
}
while (!stack.isEmpty()) {
sb.append(stack.pop());
}
二分交换首尾
切割递归反转
public static String reverseTestSix(String s) {
if (s.length() <= 1) {
return s;
}
return reverseTestSix(s.substring(1)) + s.substring(0, 1);
}
二分递归反转
public static String reverseTestSeven(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 reverseTestSeven(right) + reverseTestSeven(left);
}