虽然StringBuffer类已经提供了字符串反转的方法,但是在面试过程中可能会遇到相关的问题。下面主要采取四种方式:
1.才用交换每个位置的值来反转:
public String reverse(String str) {
if (str == null || str.length() <= 1) {
return str;
}
StringBuffer sb = new StringBuffer(str);
for (int i = 0; i < sb.length() / 2; i++) {
int swap = sb.length() - 1 - i;//交换位
char swapChar = sb.charAt(swap);//保存需要交换的值
sb.setCharAt(swap, sb.charAt(i));
sb.setCharAt(i, swapChar);
}
return sb.toString();
}
2.递归
public String reverse2(String str) {
if (str == null || str.length() <= 1) {
return str;
}
return reverse(str.substring(1)) + str.charAt(0);
}
public static String reverse3(String str){
StringBuffer sb = new StringBuffer(str);
StringBuffer result = new StringBuffer();
for(int i = sb.length()-1;i>=0;i--){
result.append(sb.charAt(i));
}
return result.toString();
}
public static String reverse4(String str){
char [] temp = str.toCharArray();
int swap = 0;
char c;
for(int i = 0;i<temp.length/2;i++){//记得i的范围一定要为length的1/2,要不然就交换了两次
swap = temp.length-1-i;
c = temp[swap];
temp[swap] = temp[i];
temp[i] = c;
}
return String.valueOf(temp);
}