55 lines
783 B
Go
55 lines
783 B
Go
package slice
|
|
|
|
// Sub: a-b=?
|
|
func SubInt64(a, b []int64) []int64 {
|
|
blen := len(b)
|
|
if blen == 0 {
|
|
return a
|
|
}
|
|
|
|
alen := len(a)
|
|
if alen == 0 {
|
|
return a
|
|
}
|
|
|
|
bset := make(map[int64]struct{}, blen)
|
|
for i := 0; i < blen; i++ {
|
|
bset[b[i]] = struct{}{}
|
|
}
|
|
|
|
ret := make([]int64, 0, alen)
|
|
for i := 0; i < alen; i++ {
|
|
if _, has := bset[a[i]]; !has {
|
|
ret = append(ret, a[i])
|
|
}
|
|
}
|
|
|
|
return ret
|
|
}
|
|
|
|
func SubString(a, b []string) []string {
|
|
blen := len(b)
|
|
if blen == 0 {
|
|
return a
|
|
}
|
|
|
|
alen := len(a)
|
|
if alen == 0 {
|
|
return a
|
|
}
|
|
|
|
bset := make(map[string]struct{}, blen)
|
|
for i := 0; i < blen; i++ {
|
|
bset[b[i]] = struct{}{}
|
|
}
|
|
|
|
ret := make([]string, 0, alen)
|
|
for i := 0; i < alen; i++ {
|
|
if _, has := bset[a[i]]; !has {
|
|
ret = append(ret, a[i])
|
|
}
|
|
}
|
|
|
|
return ret
|
|
}
|