From e0e770987c6339c143446a1aaf5fafe42a51b761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=E1=BB=93=20V=C4=83n=20H=C3=B2a?= <56647826+hovanhoa@users.noreply.github.com> Date: Sun, 8 Sep 2024 10:23:24 +0700 Subject: [PATCH] Time: 1 ms (75.07%), Space: 2.3 MB (83.19%) - LeetHub --- 0394-decode-string/0394-decode-string.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 0394-decode-string/0394-decode-string.go diff --git a/0394-decode-string/0394-decode-string.go b/0394-decode-string/0394-decode-string.go new file mode 100644 index 0000000..46591dd --- /dev/null +++ b/0394-decode-string/0394-decode-string.go @@ -0,0 +1,20 @@ +func decodeString(s string) string { + nums, codes := []int{}, []string{} + num, code := "", "" + for _, c := range s { + if unicode.IsNumber(c) { + num += string(c) + } else if unicode.IsLetter(c) { + code += string(c) + } else if c == '[' { + n, _ := strconv.Atoi(num) + nums, codes = append(nums, n), append(codes, code) + num, code = "", "" + } else if c == ']' { + n, c := nums[len(nums)-1], codes[len(codes)-1] + code = c + strings.Repeat(code, n) + nums, codes = nums[:len(nums)-1], codes[:len(codes)-1] + } + } + return code +} \ No newline at end of file