2013-01-18 4 views
3

가장 좋은 방법은 무엇입니까? - 문자열 A와 문자열 C의 집합이 주어지면 문자열에서 A의 위치가 내림차순이 아닌 순서로 문자열을 정렬하십시오. 예컨대 다른 문자열의 위치로 문자열 정렬

,

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

내 생각 컬렉션 반복 및 C에서의 위치 [I]를 지표로와는 HashMap/사전에 넣어이다. 그리고 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가있는 문자열의 동작은 정의되지 않으므로 사용자가 .ThenBy 정렬을 제공하지 않으면 임의의 순서로 반환됩니다.

+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")) 
관련 문제