|
@ -0,0 +1,56 @@ |
|
|
|
|
|
/* |
|
|
|
|
|
* string functions |
|
|
|
|
|
*/ |
|
|
|
|
|
package helper |
|
|
|
|
|
|
|
|
|
|
|
// 求差集
|
|
|
|
|
|
func Diff(slice1, slice2 []string) []string { |
|
|
|
|
|
m := make(map[string]int) |
|
|
|
|
|
nn := make([]string, 0) |
|
|
|
|
|
inter := Intersect(slice1, slice2) |
|
|
|
|
|
for _, v := range inter { |
|
|
|
|
|
m[v]++ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for _, value := range slice1 { |
|
|
|
|
|
times, _ := m[value] |
|
|
|
|
|
if times == 0 { |
|
|
|
|
|
nn = append(nn, value) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return nn |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 求交集
|
|
|
|
|
|
func Intersect(slice1, slice2 []string) []string { |
|
|
|
|
|
m := make(map[string]int) |
|
|
|
|
|
nn := make([]string, 0) |
|
|
|
|
|
for _, v := range slice1 { |
|
|
|
|
|
m[v]++ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for _, v := range slice2 { |
|
|
|
|
|
times, _ := m[v] |
|
|
|
|
|
if times == 1 { |
|
|
|
|
|
nn = append(nn, v) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return nn |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 求并集
|
|
|
|
|
|
func Union(slice1, slice2 []string) []string { |
|
|
|
|
|
m := make(map[string]int) |
|
|
|
|
|
for _, v := range slice1 { |
|
|
|
|
|
m[v]++ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for _, v := range slice2 { |
|
|
|
|
|
times, _ := m[v] |
|
|
|
|
|
if times == 0 { |
|
|
|
|
|
slice1 = append(slice1, v) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return slice1 |
|
|
|
|
|
|
|
|
|
|
|
} |