-2

假设我们有两个字符串数组

string[] array1 = {"aa", "bb", "cc"};
string[] array2 = {"bb", "aa", "cc", "bb", "aa", "cc"};

现在 array2 中的字符串 bb 在 array1 的第二个位置,所以输出应该是 2

array2 中的 aa 位于 array1 的第一个位置,因此输出应为 1

array2 中的 cc 在 array1 的第三个位置,所以输出应该是 3

array2 中的 bb 在 array1 的第二个位置,所以输出应该是 2

很快..

所有这些输出索引位置都应该存储在一个数组中。

知道如何在 C#.net 中实现这一点吗?

4

3 回答 3

1

像这样的东西:

int[] indicies = array2.Select(n => Array.IndexOf(array1, n)).ToArray();

这会将 的元素array2作为它们的索引序列投影到 中array1,并将结果转换为数组。


正如评论中所指出的,最初的要求是“aa”映射到值 1,即使它在 array1 中的索引是 0。将计算的索引偏移 1 将解决这个问题:

int[] indicies = array2.Select(n => Array.IndexOf(array1, n) + 1).ToArray();

通过这种修改,array1 中未找到的元素当然会导致索引为 0 而不是 -1。

于 2012-07-17T04:41:42.387 回答
0

假设这是家庭作业或类似的学习练习,这里有一些指导:

array2似乎是您要为其查找位置的输入值。

array1似乎是您用于确定元素位置的参考数组。

  • 循环遍历array2. 我们称之为元素elem
  • 对于每一个elem,找到索引array1
  • 将该索引添加到新数组

查看Array.IndexOf以了解如何找出elem参考数组中的索引。

于 2012-07-17T04:45:29.193 回答
0

有一段时间没有编写 C# 代码了,但是..

使用嵌套 for 循环检查 array1 是否包含数组 2 中的指定字符串,如果包含,则将索引 array1 存储在您将用于存储所有索引的数组中。

至于存储输出的数组,给它array2的大小。

祝你好运!:)

于 2012-07-17T04:48:49.250 回答