This commit is contained in:
2026-07-17 14:39:23 +08:00
parent 4b12dd8f07
commit 3bd18ddaf2
3 changed files with 165 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
package top100liked
import (
"fmt"
"strings"
"testing"
"unicode"
)
// https://leetcode.cn/problems/decode-string/description/?envType=study-plan-v2&envId=top-100-liked
func decodeString(s string) string {
curStr := ""
curNum := 0
strStack := []string{}
numStack := []int{}
for _, r := range s {
if unicode.IsDigit(r) {
curNum = curNum*10 + int(r-'0')
} else if unicode.IsLetter(r) {
curStr += string(r)
} else if r == '[' {
strStack = append(strStack, curStr)
curStr = ""
numStack = append(numStack, curNum)
curNum = 0
} else if r == ']' {
num := numStack[len(numStack)-1]
prevStr := strStack[len(strStack)-1]
numStack = numStack[:len(numStack)-1]
strStack = strStack[:len(strStack)-1]
curStr = prevStr + strings.Repeat(curStr, num)
}
}
return curStr
}
func Test(t *testing.T) {
fmt.Println(decodeString("3[a]2[bc]"))
fmt.Println(decodeString("3[a2[c]]"))
fmt.Println(decodeString("2[abc]3[cd]ef"))
fmt.Println(decodeString("abc3[cd]xyz"))
}