From f645fead638c383cb53ee946c9f4d7c849c0ae7a Mon Sep 17 00:00:00 2001 From: VicRen Date: Tue, 24 Nov 2020 09:00:01 +0800 Subject: [PATCH] 20201124 --- 20201124/main.go | 27 +++++++++++++++++++++++++++ 20201124/main_test.go | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 20201124/main.go create mode 100644 20201124/main_test.go diff --git a/20201124/main.go b/20201124/main.go new file mode 100644 index 0000000..0a99813 --- /dev/null +++ b/20201124/main.go @@ -0,0 +1,27 @@ +package main + +import "strconv" + +func main() { + +} + +func compress(str string) string { + var cl int32 + count := 0 + var ret string + for _, s := range str { + if s != cl { + cl = s + count = 1 + ret += string(s) + "1" + } else { + count++ + ret = ret[:len(ret)-1] + strconv.Itoa(count) + } + if len(ret) >= len(str) { + return str + } + } + return ret +} diff --git a/20201124/main_test.go b/20201124/main_test.go new file mode 100644 index 0000000..6bd8c28 --- /dev/null +++ b/20201124/main_test.go @@ -0,0 +1,32 @@ +package main + +import "testing" + +func Test_compress(t *testing.T) { + type args struct { + s string + } + tests := []struct { + name string + args args + want string + }{ + { + "test1", + args{"aabcccccaaa"}, + "a2b1c5a3", + }, + { + "test2", + args{"abbccd"}, + "abbccd", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := compress(tt.args.s); got != tt.want { + t.Errorf("compress() = %v, want %v", got, tt.want) + } + }) + } +}