From 1db2191a2bb7c8cb1d5d8fe493a6456d7a136ca7 Mon Sep 17 00:00:00 2001 From: Ulric Qin Date: Mon, 3 Dec 2018 22:27:43 +0800 Subject: [PATCH] code refactor --- list/list.go | 28 --------------------------- slice/sub.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 28 deletions(-) delete mode 100644 list/list.go create mode 100644 slice/sub.go diff --git a/list/list.go b/list/list.go deleted file mode 100644 index 62eaa9e..0000000 --- a/list/list.go +++ /dev/null @@ -1,28 +0,0 @@ -package list - -// Sub: a-b=? -func Sub(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 -} diff --git a/slice/sub.go b/slice/sub.go new file mode 100644 index 0000000..39d933d --- /dev/null +++ b/slice/sub.go @@ -0,0 +1,54 @@ +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 +}