在 Java 中反转字符串的最有效方法是什么?我应该使用某种异或运算符吗?简单的方法是将所有字符放入堆栈中,然后再次将它们放回字符串中,但我怀疑这是一种非常有效的方法。
请不要告诉我使用 Java 中的一些内置函数。我有兴趣学习如何做到这一点,而不是使用有效的功能,但不知道它为什么有效或它是如何构建的。
原文由 Hultner 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Java 中反转字符串的最有效方法是什么?我应该使用某种异或运算符吗?简单的方法是将所有字符放入堆栈中,然后再次将它们放回字符串中,但我怀疑这是一种非常有效的方法。
请不要告诉我使用 Java 中的一些内置函数。我有兴趣学习如何做到这一点,而不是使用有效的功能,但不知道它为什么有效或它是如何构建的。
原文由 Hultner 发布,翻译遵循 CC BY-SA 4.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 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
你说你想知道最有效的方法,你不想知道一些标准的内置方法来做这件事。那我跟你说:RTSL(阅读源码,luke):
查看 AbstractStringBuilder#reverse 的源代码,它由 StringBuilder#reverse 调用。我敢打赌它会做一些您不会考虑用于稳健的反向操作的事情。