2014-10-31 79 views
-1

我有两个int数组作为C#如何比较INT阵列部分

int[] aArray = {1,2,3,4} 
int[] bArray= {1,2,3,4,5,6} 

我想检查数组bArray拥有相同的序列

有人知道更好的解决方案aArray的所有元素?

+0

你试过了什么? – Bas 2014-10-31 11:01:36

+0

您是指从数组开头(如示例)开始连续的相同顺序中的所有元素,数组中连续的任何位置,还是数组中相同顺序中的所有元素(带有可选间隙)? – Guffa 2014-10-31 11:08:42

+0

以相同的顺序,但在阵列中的任何地方 – kiran 2014-10-31 11:17:16

回答

0

如果你只是想知道,如果第二个是包含所有int S中的第一阵列的:

hasBA = !aArray.Except(bArray).Any(); 

HashSet这也是:

bool hasBA = aArray.All(bArray.Contains); 

使用Except + Any可能更有效高效:

HashSet<int> set = new HashSet<int>(aArray); 
bool isSubset = set.IsSubsetOf(bArray); 
+0

谢谢蒂姆,最好的答案并为我工作。 – kiran 2014-10-31 11:15:15

0
int[] aArray = {1,2,3,4}; 
int[] bArray = { 1, 2, 3, 4, 5, 6 }; 

bool containsAndSameOrder = true; // this is the variable that will let you know if array bArray has all the elements of aArray in same sequence 

if (aArray.Length > bArray) 
    containsAndSameOrder = false; 
else 
{ 
    for (int i = 0; i < aArray.Length; i++) 
    { 
     if (aArray[i] != bArray[i]) 
     { 
      containsAndSameOrder = false; 
      break; 
     } 
    } 
} 
+0

谢谢你,正确的答案,但更冗长。 – kiran 2014-10-31 11:16:02

+0

不客气:)) – 2014-10-31 11:18:38