Java - 给定一个字符串,如何按字母顺序排列所有字符以生成新的字符串?

Tim*_*Tim 2 java sorting string algorithm performance

例如,如果我从字符串"dcab"开始,我想要一个接受该字符串并从中生成字符串"abcd"的函数.同样"猫"应该产生"行为".我试图想出一个有效的方法来做到这一点.谢谢你的帮助.

mre*_*mre 13

  1. 将字符串转换为字符数组
  2. 使用 Arrays.sort(char[] a)
  3. 将排序后的字符数组转换为新字符串

对效率不太确定,但这可能是最简单的实现.


Dan*_*den 12

最快的方法(特别是如果你有一个相当小的字母表,而不是所有的Unicode)将是一个Pigeonhole排序.

请注意,对于非常大的字符串,这将比(IIRC)合并排序快得多Arrays.sort(),因为Arrays.sort()它在O(n log n)时间上运行,而Pigeonhole排序在O(n + N)时间上运行,其中n是元素N的数量,是字母元素的数量.