要询问的问题如下:
实施UniqueNames方法。当传递两个名称数组时,它将返回一个包含出现在一个或两个数组中的名称的数组。返回的数组应该没有重复。
例如,调用MergeNames.UniqueNames({'Ava','Emma','Olivia'},{'Olivia','Sophia','Emma'})应该返回包含Ava,Emma,Olivia,和索菲亚以任何顺序。
起始代码:
Module Module1
Public Class MergeNames
Public Shared Function UniqueNames(names1() As String, names2() As String) As String()
Throw New NotImplementedException()
End Function
End Class
Public Sub Main()
Dim names1() As String = {"Ava", "Emma", "Olivia"}
Dim names2() As String = {"Olivia", "Sophia", "Emma"}
Console.WriteLine(string.Join(", ", MergeNames.UniqueNames(names1, names2))) ' should print Ava, Emma, Olivia, Sophia
End Sub
End Module
答案 0 :(得分:1)
LINQ将是最简单的方法:
Dim combinedUniqueNames = names1.Union(names2).Distinct().ToArray()
Union
将合并两个列表,Distinct
将删除重复项,而ToArray
从结果中创建一个新数组。就像LINQ扩展方法一样,它们都可以在任何IEnumerable(Of T)
上调用。您的String
数组实现了IEnumerable(Of String)
。
编辑:
根据Jimi的评论,我们只需要:
Dim combinedUniqueNames = names1.Union(names2).ToArray()
我想我应该已经意识到了,因为“联合”是一个集合操作,并且在数学环境中确实排除了重复项。