您的位置:首页 > 编程语言 > Java开发

java 字符串的反转

2013-08-28 21:17 393 查看
虽然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);
}


3.追个追加字符串的方式
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();
}


4.交换数组的方式(看了jdk的源码实现好像就是这种方式)
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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: