Recently I encountered an issue where I was supposed to merge two slices of strings into one so that the resulting slice should not contain any element from first or the second more than once. For example, A = [‘x’,’y’,’z’] and B = [‘x’,’p’,’q’] → C = [‘p’,’x’,’z’,’q’,’y’].
So here I’m doing what is mentioned in the topic of this blog on the final slice that is a=obtained by just appending both the slices. This can be done by- c:= append(a, b…)
Algorithm for the solution:-
- append both the slices and form the final slice.
- Create a hash map from string to int. (you can use something else as value too)
- Iterate through slice and map each element to 0. (or any other thing)
- Now finally iterate through the map and append each key of the map to a new slice of strings. Since any duplicate value too will be mapped to the same number as the previous one, hence all the keys will be unique.
package main
import (
"fmt"
)
func appendCategory(a []string, b []string) []string {
check := make(map[string]int)
d := append(a, b...)
res := make([]string,0)
for _, val := range d {
check[val] = 1
}
for letter, _ := range check {
res = append(res,letter)
}
return res
}
func main() {
a := []string{"x", "y", "z"}
b := []string{"x", "p", "q"}
c := appendCategory(a, b)
fmt.Println(c)
}