2013-01-18 92 views
3

要做的最佳方法是什麼?給定字符串A和字符串C的集合,以字符串中A的位置的非遞減順序排列集合中的字符串。按另一個字符串的位置對字符串進行排序

例如,

A= abc 
C= [deabc, abc, dabc, dad] 
Sorted C= [abc, dabc, deabc] 

我的想法是遍歷集合並把它放在一個HashMap /詞典與A在C中的位置[I]爲指標。然後從HashMap構造排序後的集合。這不是一個家庭作業問題。只是想知道這樣做的有效方式/算法。任何指針都會有幫助。

+1

你可以使用[LINQ](http://msdn.microsoft.com/en-us/library/vstudio/bb397926.aspx)嗎? – mellamokb

+0

是的,我可以使用LINQ。 – ABC

+1

'var results = yourList.OrderBy(str => str.IndexOf(「abc」))' –

回答

4

這裏有一個簡單的方法使用LINQ:即不包含字符串

var SortedC = C.OrderBy (d => d.IndexOf(A)).ToArray(); 

注會在開始進行排序,因爲IndexOf回報-1。此外,具有相同索引的字符串A的行爲是未定義的,並且將以任意順序返回,除非您提供了排序來處理這些行爲。

+0

也許你的意思是'd.IndexOf(a)'? –

+0

@IlyaIvanov:是的,謝謝,我誤解了這個問題。 – mellamokb

+1

如果字符串很長,也許可以很方便的做:'var sorted = C.Select(x => new {Str = x,Pos = x.IndexOf(A)})。OrderBy(x => x.Pos) .Select(x => x.Str);' – digEmAll

1
stringsArray.OrderBy(s => s.IndexOf("a")) 
相關問題