2015-08-09 55 views
1

如何排序字符串中的字符例如“5121” - >“1125”?快速排序字符串中的字符

我可以用下面的代码做到这一点,但它似乎过于缓慢:

var nonSortedString = "5121" 
var sortedString = String(Array(nonSortedString.characters).sort()) 
+3

*“看起来太慢了”* - 你有具体的数字吗? –

+0

如果它有效并且不是一个可察觉的性能问题,那很好。 – zaph

+0

那么,我有一个代码在迅速和类似的代码在c + +更快。所以我认为这个转换string-> array-> string会播放。我有std :: sort(stringToSort.begin(),stringToSort.end()); – yshilov

回答

2

CharacterView妥善处理复合字符,并提供适当的排序(“EEF”与“埃菲社”)。如果您对C++处理unicode字符的方式没有问题,请尝试使用其他视图之一,如nonSortedString.utf16.sort()。它应该提供类似于C++的速度。

+0

谢谢。这帮助我增加了3.5倍的速度 (对不起,我不能投票回答,因为我的声望很低) – yshilov

+0

在swift中,我转换为utf16数字。你如何将数组数组转换回字符串? – c0d3Junk13