From 3e0e34e4d99a62a5ef43a01ff4c0f0beef2f0273 Mon Sep 17 00:00:00 2001 From: YDZ Date: Fri, 2 Aug 2019 20:08:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20problem=20839?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../839. Similar String Groups.go | 27 ++++++++++++ .../839. Similar String Groups_test.go | 42 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Algorithms/0839. Similar String Groups/839. Similar String Groups.go create mode 100644 Algorithms/0839. Similar String Groups/839. Similar String Groups_test.go diff --git a/Algorithms/0839. Similar String Groups/839. Similar String Groups.go b/Algorithms/0839. Similar String Groups/839. Similar String Groups.go new file mode 100644 index 00000000..124fb661 --- /dev/null +++ b/Algorithms/0839. Similar String Groups/839. Similar String Groups.go @@ -0,0 +1,27 @@ +package leetcode + +func numSimilarGroups(A []string) int { + uf := UnionFind{} + uf.init(len(A)) + for i := 0; i < len(A); i++ { + for j := i + 1; j < len(A); j++ { + if isSimilar(A[i], A[j]) { + uf.union(i, j) + } + } + } + return uf.totalCount() +} + +func isSimilar(a, b string) bool { + var n int + for i := 0; i < len(a); i++ { + if a[i] != b[i] { + n++ + if n > 2 { + return false + } + } + } + return true +} diff --git a/Algorithms/0839. Similar String Groups/839. Similar String Groups_test.go b/Algorithms/0839. Similar String Groups/839. Similar String Groups_test.go new file mode 100644 index 00000000..d469edc1 --- /dev/null +++ b/Algorithms/0839. Similar String Groups/839. Similar String Groups_test.go @@ -0,0 +1,42 @@ +package leetcode + +import ( + "fmt" + "testing" +) + +type question839 struct { + para839 + ans839 +} + +// para 是参数 +// one 代表第一个参数 +type para839 struct { + one []string +} + +// ans 是答案 +// one 代表第一个答案 +type ans839 struct { + one int +} + +func Test_Problem839(t *testing.T) { + + qs := []question839{ + + question839{ + para839{[]string{"tars", "rats", "arts", "star"}}, + ans839{2}, + }, + } + + fmt.Printf("------------------------Leetcode Problem 839------------------------\n") + + for _, q := range qs { + _, p := q.ans839, q.para839 + fmt.Printf("【input】:%v 【output】:%v\n", p, numSimilarGroups(p.one)) + } + fmt.Printf("\n\n\n") +}