2013-05-12 2 views
0

번째 배열을 반환하지만, 데모 용 I는 문자 AE 사용 :카운트 인스턴스 I 문자열의 두 배열을

{A, B, C, D, E}

{1, a, b, c, c, c, d, e, e}

첫 번째 배열의 각 요소의 인스턴스를 두 번째 배열의 요소로 계산하고 세 번째 배열을 반환합니다. 첫 번째 배열의 길이). 상기 두 어레이 주어진 예

, 내 프로그램은 복귀해야

{2,1,3,1,2}을

대안 적 방법을 두 번째 배열을내어 :

{A, A, B, C, C, C, D, E, E}

및 복귀 :

{A, B, C, D, E}

,

{2,1,3,1,2}

도 내 프로그램의 목적에 부합합니다.

function foo(arr) { 
    var a = [], b = [], prev; 

    arr.sort(); 
    for (var i = 0; i < arr.length; i++) { 
     if (arr[i] !== prev) { 
      a.push(arr[i]); 
      b.push(1); 
     } else { 
      b[b.length-1]++; 
     } 
     prev = arr[i]; 
    } 

    return [a, b]; 
} 

어떻게 Visual Basic에서이 작업을 수행 할 것입니다 :

나는이 작업을 수행 할 수 있습니다 자바 스크립트에서 알아?

+0

을 C#에서, LINQ를 사용하여 :.'b.Where (C => a.Contains의 (c)) GROUPBY (C => C). (g => g.Count())'를 선택하십시오. 여기서'a'는 첫 번째 목록이고'b'는 두 번째 목록입니다. – Oded

+0

다른 방법 :'var result = (select b.Count (text => text == item)의 항목에서.) ToArray();'(하지만 C#에서는 VB에서 어떻게 보이는지 모른다.) –

+0

@MatthewWatson - What 제로 카운트? 하지만 예, 필터링하면됩니다. – Oded

답변

0

나는이 (간단)처럼 할 것 :

Dim strings() As String = {"a","b","c","d","e"} 
Dim stringsToCheck() As String = {"a","a","b","c","c","c","d","e","e"} 
Dim results(strings.length) as Integer 

For Each strToCheck as String in stringsToCheck 
    For Each str As String in strings 
     If strToCheck.Equals(str) Then 
     results(strings.IndexOf(str)) += 1 
     Exit For 
     End If 
    Next 
Next 
관련 문제