StringBuilder.reverse()是字符串镜像翻转最简洁高效的方式,时间复杂度O(n),基于数组原地交换,无需额外拼接;需每次新建实例以避免状态残留,适用于回文判断、单词顺序反转等场景。

直接调用 StringBuilder.reverse() 是实现字符串镜像翻转(即字符顺序完全反转)最简洁、高效的方式,时间复杂度 O(n),内部基于数组原地交换,无需额外字符串拼接开销。
基础用法:一行完成翻转
适用于需要快速获取反转后字符串的场景,比如回文判断预处理、密码学中的简单置换等:
- 先创建
StringBuilder实例,传入原始字符串 - 调用
.reverse()方法(该方法返回当前对象引用,支持链式调用) - 用
.toString()转为普通字符串输出或参与后续计算
String original = "hello";<br>String mirrored = new StringBuilder(original).reverse().toString(); // 结果为 "olleh"
避免常见误区:不可重复使用同一实例
StringBuilder 是可变对象,.reverse() 会**直接修改其内部字符数组**。若需多次翻转不同字符串,每次都要新建实例:
- ❌ 错误:复用同一个
StringBuilder对象并反复.setLength(0)后.append(),再.reverse()—— 容易因长度/容量状态不一致引发逻辑错误 - ✅ 推荐:每次翻转都用
new StringBuilder(str).reverse().toString(),语义清晰、线程安全、无状态残留
结合算法需求的典型应用
在滑动窗口、双指针或栈模拟类问题中,镜像翻转常用于对称性处理:
- 判断回文:比较原串与翻转串是否相等(注意忽略空格、大小写时需先标准化)
- 反转单词顺序(非单个字符):先整体翻转,再逐个翻转单词(如
"hello world"→"dlrow olleh"→"world hello") - 构建回文前缀:给定字符串 s,求最短回文串(s + suffix),可用翻转辅助 KMP 或 Manacher 预处理
性能提示:比 String.concat() 或 + 更优
相比用循环 + += 拼接反转字符,StringBuilder.reverse() 避免了多次创建中间 String 对象,GC 压力小;相比手写 for 循环交换字符再构造新串,它封装可靠且经 JVM 优化(如 JDK 9+ 使用 byte[] 存储,进一步减少内存占用)。










