gpt4 book ai didi

c# - 比较两个不同长度的数组并显示差异

转载 作者:可可西里 更新时间:2023-11-01 08:55:00 26 4
gpt4 key购买 nike

问题:
我有两个可能长度不同的数组。我需要遍历两个数组并找到相似点、添加项和删除项。

在 C# 中完成此任务最快、最有效的方法是什么?

编辑:数组是预先排序的,它们可以包含 50-100 个项目之间的任何位置。此外,对速度和/或内存使用没有任何限制(但是,没有人喜欢内存占用;)


例如:

String[] Foo_Old = {"test1", "test2", "test3"};
String[] Foo_New = {"test1", "test2", "test4", "test5"};

String[] Bar_Old = {"test1", "test2", "test4"};
String[] Bar_New = {"test1", "test3"};

差异:

(关于 Foo_New 数组)

[Same]    "test1"[Same]    "test2"[Removed] "test3"[Added]   "test4"[Added]   "test5"

(关于 Bar_New 数组)

[Same]    "test1"[Removed] "test2"[Removed] "test4"[Added]   "test3"

最佳答案

您可以使用 ExceptIntersect ...

var Foo_Old = new[] { "test1", "test2", "test3" }; 
var Foo_New = new[] { "test1", "test2", "test4", "test5" };

var diff = Foo_New.Except( Foo_Old );
var inter = Foo_New.Intersect( Foo_Old );
var rem = Foo_Old.Except(Foo_New);

foreach (var s in diff)
{
Console.WriteLine("Added " + s);
}

foreach (var s in inter)
{
Console.WriteLine("Same " + s);
}

foreach (var s in rem)
{
Console.WriteLine("Removed " + s);
}

关于c# - 比较两个不同长度的数组并显示差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1022986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com