字符串反轉是面試高頻題,也是日常處理文本的基礎操作。本文對比「手動數組反轉」與「API 一鍵反轉」兩種方案,分析性能與適用場景。
public static String reverseByArray(String str) {
if (str == null) return null;
char[] chars = str.toCharArray();
int left = 0, right = chars.length - 1;
while (left < right) {
char tmp = chars[left];
chars[left] = chars[right];
chars[right] = tmp;
left++;
right--;
}
return new String(chars);
}
public static String reverseByBuilder(String str) {
if (str == null) return null;
return new StringBuilder(str).reverse().toString();
}
StringBuilder (非線程安全) 性能優於 StringBuffer,單線程環境首選。| 基準 | Mode | Score (ops/ms) | Error |
|---|---|---|---|
| reverseByArray | thrpt | 12,450 ± 320 | ±2.6% |
| reverseByBuilder | thrpt | 18,900 ± 410 | ±2.2% |
StringBuilder 約快 30%-50%,隨字符串長度增長優勢明顯。
result += charArray[i]:字符串不可變,每次拼接新建對象,O(n²) 災難。String 拼接反轉,同上。char[] 或 StringBuilder 操作。面試/教學 → 手寫雙指針 toCharArray();生產代碼 → 一行 new StringBuilder(str).reverse().toString()。工具箱裡裝好兩把刀,按場景取用。