这个面试被问到过,我当时就用char和StringBuffer写出来了,面试官还问我有没有其它的,没写出来,
现在总结三种方法,仅供参考
利用字符数组,没两个做swap交换
public static String reverse(String str) {
if((null== str) || (str.length() <=1)) {
return str;
}
char[] chars = str.toCharArray();
int right = chars.length -1;
for(int left =0; left < right; left++) {
char swap = chars[left];
chars[left] = chars[right];
chars[right--] = swap;
}
return new String(chars);
}
2.StringBuffer的append方法
public String reverse(String str) {
if((null== str) || (str.length() <=1)) {
Return str;
}
StringBuffer reverse =new StringBuffer(str.length());
for(int i = str.length() -1; i >=0; i--) {
reverse.append(str.charAt(i));
}
return reverse.toString();
}
3.第三种方法思想跟第一种一样,也是做交换,调用了StringBuffer的setCharAt()方法
public static String reverse(String str)
{
if((null== str) || (str.length() <=1)) {
return str;
}
StringBuffer result=new StringBuffer(str);
for(int i=0;i<(result.length()/2);i++)
{
int swapIndex = str.length() -1- i;
char swap = result.charAt(swapIndex);
result.setCharAt(swapIndex, result.charAt(i));
result.setCharAt(i, swap);
}
return str.toString();
}