0

文字列の配列が 2 つありますが、デモンストレーションのために文字 ae を使用します。

{a,b,c,d,e}

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

1 番目の配列の各要素のインスタンスを 2 番目の配列の要素としてカウントし、カウントの 3 番目の配列 (最初の配列の長さ) を返します。

たとえば、上記の 2 つの配列が与えられた場合、私のプログラムは次を返す必要があります。

{2,1,3,1,2}

または、2 番目の配列を取得する方法:

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

そして戻ります:

{a,b,c,d,e}

{2,1,3,1,2}

私のプログラムの目的にも役立ちます。

私はJavaScriptでこれを行うことができることを知っています:

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 でこれを行うにはどうすればよいでしょうか。

4

1 に答える 1

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
于 2013-05-25T17:14:36.967 に答える