C#中斷定一個聚集能否是另外一個聚集的子集的簡略辦法。本站提示廣大學習愛好者:(C#中斷定一個聚集能否是另外一個聚集的子集的簡略辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中斷定一個聚集能否是另外一個聚集的子集的簡略辦法正文
看到這個題目,我們起首想到的是輪回遍歷個中一個數組,斷定數組中的每一個元素能否都在另外一個數組中湧現了,以此來斷定該數組是否是另外一個數組的子集,然則如許做就太甚龐雜了,有無簡略一點的辦法呢?
打個比喻,有如許的兩個聚集:
string[] bigArr = new string[] { "a", "b", "c" };
string[] smallArr = new string[] { "a", "b"};
如今須要斷定smallArr能否是bigArr的子集。只需拿著bigArr和smallArr比擬,求差集,假如差集的個數年夜於0,就解釋smallArr是bigArr的子集。
//在年夜聚集的基本上,依據小聚集獲得年夜聚集的差集
var exceptArr = bigArr.Except(smallArr);
//斷定能否是子集
if(exceptArr.Any())
{
Console.WriteLine("samllArr 是 bigArr的一個子集");
}
else
{
Console.WriteLine("samllArr 不是 bigArr的一個子集");
}
以上的方法,只能斷定能否是子集,等於子集的誰人聚集元素永久小於年夜的誰人聚集。
有時刻,還存在如許的需求:斷定bigArr能否包括smallArr,即smallArr可所以bigArr的子集,也能夠和bigArr是一樣的。
//斷定能否是子集或2個聚集一樣
if(smallArr.All(t => bigArr.Any(b => b==t)))
{
Console.WriteLine("samllArr 是 bigArr的一個子集或一樣");
}
else
{
Console.WriteLine("samllArr 不是 bigArr的一個子集或一樣");
}