3

最善の方法は何ですか-文字列Aと文字列Cのコレクションが与えられた場合、コレクション内の文字列を、文字列内のAの位置が減少しない順序で並べます。

例えば、

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

私の考えは、コレクションを反復処理し、C[i] の A の位置をインデックスとして HashMap/Dictionary に配置することです。そして、HashMap からソートされたコレクションを構築します。これは宿題の問題ではありません。これを行う効率的な方法/アルゴリズムを知りたかっただけです。どんなポインタも役に立ちます。

4

2 に答える 2

4

LINQ を使用した簡単な方法を次に示します。

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

A を含まない文字列は最初にソートされることに注意してIndexOfください-1。また、同じインデックスに A を持つ文字列の動作は定義されておらず、.ThenByそれらを処理するための並べ替えを提供しない限り、任意の順序で返されます。

于 2013-01-18T16:47:02.423 に答える
1
stringsArray.OrderBy(s => s.IndexOf("a"))
于 2013-01-18T16:48:15.997 に答える