2015-08-09 32 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