数学:对称差
本课属于 Coddy C# 学习旅程的“逻辑与流程”单元。第 65 课,共 66 课。
两个集合的对称差包含属于其中任意一个集合、但不属于它们交集的元素(也就是只出现在其中一个集合中的元素)。
创建两个 HashSet 对象:
HashSet<int> set1 = new HashSet<int>() { 1, 2, 3, 4 };
HashSet<int> set2 = new HashSet<int>() { 3, 4, 5, 6 };为结果创建一个新的 HashSet:
HashSet<int> symmetricDifference = new HashSet<int>(set1);使用 SymmetricExceptWith 方法来计算对称差:
symmetricDifference.SymmetricExceptWith(set2);运行上述代码后,symmetricDifference 集合包含:
{ 1, 2, 5, 6 }元素 3 和 4 都在两个集合中,因此它们不会出现在对称差中。
挑战
简单创建一个名为 FindSymmetricDifference 的方法,它接受两个参数:
- 一个整数
HashSet(set1) - 一个整数
HashSet(set2)
该方法应返回一个新的 HashSet<int>,其中包含这两个集合的对称差。程序的其余部分(读取输入、排序和输出结果)已经为你提供。
亲手试试
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
public static HashSet<int> FindSymmetricDifference(HashSet<int> set1, HashSet<int> set2)
{
// 在这里编写你的代码
}
static void Main(string[] args)
{
string[] input1 = Console.ReadLine().Split(',');
string[] input2 = Console.ReadLine().Split(',');
HashSet<int> set1 = new HashSet<int>();
HashSet<int> set2 = new HashSet<int>();
foreach (string s in input1)
{
if (int.TryParse(s.Trim(), out int num))
{
set1.Add(num);
}
}
foreach (string s in input2)
{
if (int.TryParse(s.Trim(), out int num))
{
set2.Add(num);
}
}
HashSet<int> result = FindSymmetricDifference(set1, set2);
// 按升序输出结果
int[] orderedResult = result.OrderBy(x => x).ToArray();
foreach (int num in orderedResult)
{
Console.WriteLine(num);
}
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C# 在线编译器