最快的排序字符串连接

时间:2014-06-03 22:53:45

标签: python

最快,最有效的方法是什么:

word = "dinosaur"

newWord = word[0] + ''.join(sorted(word[1:]))

输出:

"dainorsu"

思想:

将单词转换为数组会增加性能吗?我在某处读到数组的开销较少,因为与字符串相比,它们是相同的数据类型。

基本上我想尽可能快地对字符串中第一个字符后的所有内容进行排序。如果保存了内存,那也是一个加分。我试图解决的问题需要在一定的时间限制内,所以我想尽可能快。我不太了解引擎盖下的python效率,所以如果你解释为什么这个方法很快就会很棒!

1 个答案:

答案 0 :(得分:2)

以下是我接近它的方法。

创建一个大小为26的数组(假设只使用小写字母)。然后遍历字符串中的每个字符。对于字母表的第一个字母,递增数组的第一个索引;对于第二个,增加第二个。一旦你扫描了整个字符串(复杂度为O(n)),你就可以通过重复'a'数组[0]次,'b'数组[1]次来重建它,依此类推

这种方法可以胜过快速排序算法,如快速排序或分区排序,它具有复杂度O(nlogn)。

编辑:最后你还想有效地重组最后一个字符串。某些语言使用+运算符提供的字符串连接可能效率低下,因此请考虑使用高效的字符串构建器类。