以下是通过调用 API 方法来反转字符串的两种方法。请在有正当理由的情况下说明哪种方法更好
public String functionOne(String str){
char arr[] = str.toCharArray();
int limit = arr.length/2;
for (int i = arr.length-1, j = 0; j < limit; i--, j++) {
char c = arr[i];
arr[i] = arr[j];
arr[j] = c;
}
return new String(arr);
}
public String functionTwo(String str) {
StringBuilder strBuilder = new StringBuilder();
char[] strChars = str.toCharArray();
for (int i = strChars.length - 1; i >= 0; i--) {
strBuilder.append(strChars[i]);
}
return strBuilder.toString();
}
实际上,当我在长度为 100000 的字符串上运行我的代码时,第二种方法花费的时间是第一种方法的两倍。通过使用 System.currentTimeMillis() 我发现第一种方法中的执行差异为 1,第二种方法中的执行差异为 2。