Java 怎样反转字符串?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
普通需求可以使用 new StringBuilder(text).reverse().toString()。但“反转”要先定义单位:按 UTF-16 代码单元、Unicode 码点,还是人眼看到的字素簇。涉及组合字符、肤色修饰符或复杂表情时,简单反转不一定符合用户期望。
讲清原理
String 本身不可变,所以反转会得到新的字符串值。StringBuilder.reverse 会特别处理有效的代理项对,避免把一个常见补充字符的高低代理项简单倒过来;这比直接把 char[] 逐个倒序更周到。
不过,一个可见字符可能由多个码点构成,例如字母加组合重音,或多个码点组成的表情。保住代理项对,仍不等于保住整个可见字符。面向用户文本的处理,应按字素分段需求选择合适实现与测试样本。
例子与易错点
String text = "A😀B";
String reversed = new StringBuilder(text).reverse().toString();
System.out.println(reversed); // B😀A
System.out.println(text); // A😀B
这个例子正确,不代表任何自然语言文本都能这样反转。涉及密码、协议或标识符时,还要先确认业务真的需要反转,而不是只为演示算法。
相关题:第 20 题、第 31 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。