【发布时间】:2019-01-08 13:17:38
【问题描述】:
我有两个数组:{1, 2, 3, 4, 5} 和 {1, 3, 3, 6, 5}。
要找出许多相似的项目(在同一位置),我这样做:
int[] a = new int[5] {1, 2, 3, 4, 5};
int[] b = new int[5] {1, 3, 3, 6, 5};
int count = 0;
for(int i = 0; i < 5; i++)
{
if(a[i] == b[i])
count++;
}
Console.Write(count);
这将给出结果 3。
有没有更好(更快)的方法来做到这一点?
【问题讨论】:
-
您可以对其进行卷积以减少代码,但除非有充分的理由我会说不要打扰。它很好,并且以非常清晰的方式完全满足您的需求。
-
@Archer 在
b.Length > a.Length的情况下IndexOutOfRangeException的危险如何-除此之外,我会避免迭代到固定值 -
我建议您添加类似
int n = Math.Max(a.Length, b.Length)的内容,然后使for循环看起来像:for(int i = 0; i < n; i++)。除此之外,您的代码在可读性和性能方面可能是最佳的。 -
@fubo 这个例子中有很多不应该存在的硬编码值。这显然是一个问题示例,而不是生产代码。