首页 >后端开发 >Golang >如何在 Go 中高效查找两个字符串切片之间的差异?

如何在 Go 中高效查找两个字符串切片之间的差异?

Patricia Arquette
Patricia Arquette原创
2024-12-09 05:27:13410浏览

How Can I Efficiently Find the Difference Between Two String Slices in Go?

查找字符串切片子集之间的区别

要确定区分一个字符串切片子集与另一个字符串切片子集的元素,请考虑以下内容问题:

<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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn