在 Java 中反转 String 的最有效算法是什么?

新手上路,请多包涵

在 Java 中反转字符串的最有效方法是什么?我应该使用某种异或运算符吗?简单的方法是将所有字符放入堆栈中,然后再次将它们放回字符串中,但我怀疑这是一种非常有效的方法。

请不要告诉我使用 Java 中的一些内置函数。我有兴趣学习如何做到这一点,而不是使用有效的功能,但不知道它为什么有效或它是如何构建的。

原文由 Hultner 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 398
2 个回答

你说你想知道最有效的方法,你不想知道一些标准的内置方法来做这件事。那我跟你说:RTSL(阅读源码,luke):

查看 AbstractStringBuilder#reverse 的源代码,它由 StringBuilder#reverse 调用。我敢打赌它会做一些您不会考虑用于稳健的反向操作的事情。

原文由 Tom 发布,翻译遵循 CC BY-SA 3.0 许可协议

以下不涉及 UTF-16 代理对。

 public static String reverse(String orig)
{
    char[] s = orig.toCharArray();
    int n = s.length;
    int halfLength = n / 2;
    for (int i=0; i<halfLength; i++)
    {
        char temp = s[i];
        s[i] = s[n-1-i];
        s[n-1-i] = temp;
    }
    return new String(s);
}

原文由 Simon Nickerson 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题