查找字符串切片子集之间的区别
要确定区分一个字符串切片子集与另一个字符串切片子集的元素,请考虑以下内容问题:
<p>Here is my desired outcome</p> <pre class="brush:php;toolbar:false">slice1 := []string{"foo", "bar","hello"} slice2 := []string{"foo", "bar"} difference(slice1, slice2) => ["hello"]
I need to determine the disparities between these two string slice sections!
解决方案
解决此问题的有效方法假设 Go 映射的运行复杂度约为 O(1)。因此,建议的差分函数对未排序的切片进行操作,复杂度约为 O(n)。
// difference returns the elements in `a` that aren't in `b`. func difference(a, b []string) []string { mb := make(map[string]struct{}, len(b)) for _, x := range b { mb[x] = struct{}{} } var diff []string for _, x := range a { if _, found := mb[x]; !found { diff = append(diff, x) } } return diff }
通过使用映射来有效地确定元素成员资格,差分函数可以有效地识别和隔离存在的那些元素在一个切片中而不是在另一个切片中,提供字符串切片子集之间的准确比较。
以上是如何在 Go 中高效查找两个字符串切片之间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!