I came across this requirement in Go where I need to take the union of slices of strings
This is for Go version 1.12.5
func Union(a, b []string) []string {
m := make(map[string]bool)
for _, item := range a {
m[item] = true
}
for _, item := range b {
if _, ok := m[item]; !ok {
a = append(a, item)
}
}
return a
}
I have the above piece of code, but the performance is quite critical here because I need to union many slices altogether. I have to do another for loop to loop over the list of slices. Maybe is there any better way to achieve this?
More info: All the slices are ready in one place and each is sorted in lexicographic order. Almost every slice has duplicates with others.