📅  最后修改于: 2023-12-03 14:39:47.139000             🧑  作者: Mango
在编程过程中,经常需要查找重复项。在C#中,我们可以使用不同的方法来查找重复项,以便更高效地处理数据。
对于一个给定的列表或数组,我们可以使用以下方法来查找重复项:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 4, 5, 6, 7, 7, 8 };
HashSet<int> duplicates = new HashSet<int>();
foreach (int number in numbers)
{
if (!duplicates.Add(number))
{
Console.WriteLine("重复项: " + number);
}
}
}
}
使用HashSet的Add方法将每个元素添加到集合中。如果元素已经存在于集合中,则Add方法返回false,我们可以将其标记为重复项。
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 4, 5, 6, 7, 7, 8 };
var duplicates = numbers.GroupBy(n => n)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (int duplicate in duplicates)
{
Console.WriteLine("重复项: " + duplicate);
}
}
}
使用LINQ查询语法,我们可以使用GroupBy方法对列表进行分组,并使用Count方法来获取每个分组的数量。然后,我们可以使用Where方法筛选出具有多个重复项的分组,并使用Select方法选择出重复项的值。
对于一个给定的字符串,我们可以使用以下方法来查找重复项:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
string input = "Hello World!";
HashSet<char> duplicates = new HashSet<char>();
foreach (char character in input)
{
if (!duplicates.Add(character))
{
Console.WriteLine("重复字符: " + character);
}
}
}
}
此方法与上面的列表/数组中的方法相似,只是我们将字符串中的每个字符添加到HashSet中以查找重复项。
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
string input = "Hello World!";
var duplicates = input.GroupBy(c => c)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (char duplicate in duplicates)
{
Console.WriteLine("重复字符: " + duplicate);
}
}
}
这种方法与上面的列表/数组方法类似,我们使用GroupBy方法对字符串中的字符进行分组,并使用Count方法和Where方法来查找重复项。
这些是在C#中查找重复项的一些常见方法。根据不同的需求和数据类型,你可以选择适合你的方法来高效地查找重复项。