【问题标题】:Java - Given a String, how to order all its chars alphabetically to produce a new String?Java - 给定一个字符串,如何按字母顺序排列其所有字符以生成一个新字符串?
【发布时间】:2012-02-29 05:51:08
【问题描述】:

例如,如果我从字符串“dcab”开始,我想要一个函数来获取该字符串并从中生成字符串“abcd”。同样,“猫”应该产生“行为”。我试图想出一种有效的方法来做到这一点。感谢您的帮助。

【问题讨论】:

    标签: java string performance algorithm sorting


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

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

    【讨论】:

      【解决方案2】:

      最快的方法是使用Pigeonhole sort

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

      【讨论】:

        【解决方案3】:
        char[] array = str.toCharArray();
        Arrays.sort(array)
        return new String(array);
        

        【讨论】:

        • Arrays.sort 对数组进行就地排序并返回 void。此代码将不起作用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 1970-01-01
        • 2019-04-17
        • 1970-01-01
        • 1970-01-01
        • 2013-05-14
        相关资源
        最近更新 更多