From 82566afa5e5d10177fc21d9b54c157d267eeab68 Mon Sep 17 00:00:00 2001 From: VicRen Date: Sun, 3 Jan 2021 20:30:49 +0800 Subject: [PATCH] 20210104 --- 20210104/main.go | 33 ++++++++++++++++++++++++++++++++- 20210104/main_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/20210104/main.go b/20210104/main.go index 5ef82bf..de041d6 100644 --- a/20210104/main.go +++ b/20210104/main.go @@ -1,9 +1,40 @@ package main +import "strings" + func main() { } func solution(s string) string { - return "" + var stack [26]int + max := 0 + for i := 0; i < len(s); i++ { + index := s[i] - 'a' + stack[index]++ + if stack[index] > max { + max = stack[index] + } + } + sb := strings.Builder{} + up := true + for i := 0; i < max; i++ { + if up { + for j := 0; j < len(stack); j++ { + if stack[j] > 0 { + sb.WriteByte(uint8(j) + 'a') + stack[j]-- + } + } + } else { + for j := len(stack) - 1; j >= 0; j-- { + if stack[j] > 0 { + sb.WriteByte(uint8(j) + 'a') + stack[j]-- + } + } + } + up = !up + } + return sb.String() } diff --git a/20210104/main_test.go b/20210104/main_test.go index 272ca18..b42d9e3 100644 --- a/20210104/main_test.go +++ b/20210104/main_test.go @@ -18,6 +18,34 @@ func Test_solution(t *testing.T) { }, "abccbaabccba", }, + { + "test2", + args{ + "rat", + }, + "art", + }, + { + "test3", + args{ + "leetcode", + }, + "cdelotee", + }, + { + "test4", + args{ + "ggggggg", + }, + "ggggggg", + }, + { + "test5", + args{ + "spo", + }, + "ops", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {