using System;
using System.Linq;
public class Program
{
public static void Main()
{
string[] a = { "100", "200", "300" , "400" , "500" };
string[] b = { "100", "222", "300" , "444"};
foreach (string str in b)
{
if (a.Contains(str)) {
Console.WriteLine("Yes-" + str );
} else {
Console.WriteLine("No-" + str);
}
} // 1
}
}
比較a跟b的內容,以a為為主找b內的值,把跟a不一樣的挑出來
=>換個邏輯想,就是以B為主,排除A有出現的,剩下的就是與A不一樣的
可用 Except() 來處理,重複的也一並排除了
double[] B = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] A = { 2.2 };
IEnumerable<double> different = B.Except(A);
foreach (double number in different)
Console.WriteLine(number);
/*
顯示結果:
2
2.1
2.3
2.4
2.5
*/
依照我對題目的理解,其實就是在找出b迴圈裡面,哪些數值是不在a裡面的
如果是我自己的做法,我會另外做一個做一個HashSet去儲存a的值
之後再跑用foreach跑過一次b,去比對HashSet裡面的值
string[] a = { "1", "2", "3", "4", "5" };
string[] b = {"2", "3", "4", "5", "6", "7", "8", "0"};
var a2 = new HashSet<string>(a);
foreach (var val in b)
{
if (!a2.Contains(val))
{
Console.WriteLine(val);
}
}
//6 7 8 0
我覺得這樣做比較單純,以時間複雜度的角度來講也比跑過雙層迴圈還低