1.最直接的调用StringBuffer的reverse方法
StringBuffer db = new StringBuffer("123456789");
System.out.println(db.reverse());
此方法的时间复杂度为O(n/2) 空间复杂度为:O(1)
2.借助for循环实现
public static String reverse2(String str){
StringBuffer temp = new StringBuffer("");
for(int length=str.length();length>0;--length){
temp.append(str.charAt(length-1));
}
return temp.toString();
}
此方法的时间复杂度为O(n) 空间复杂度为:O(n)
3. 折半,然后向两边扩散交换
public static String reverse1(String str){
char[] chararray = str.toCharArray();
int len=chararray.length-1;
for(int i=(len-1)/2;i>=0;i--){
int k=len-i;
char ck= chararray[k];
char ci= chararray[i];
chararray[k]=ci;
chararray[i]=ck;
}
return new String(chararray);
}
对chararray数组查找的时间复杂度是O(1)
此方法的时间复杂度为O(n/2) 空间复杂度为:O(1) 其实方法3就是 方法1的实现细节