0

我有两个字符串数组,但出于演示目的,我将使用字母 ae:

{a,b,c,d,e}

{a,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}

也将服务于我的程序的目的。

我知道在 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 回答