lc-go/solutions/3/q394/solution.go
2026-01-25 11:56:12 +09:00

41 lines
621 B
Go

package q394
import "strings"
func decode(s string) (int, string) {
advanced := 0
number := 0
buf := strings.Builder{}
Loop:
for advanced < len(s) {
advanced++
cur := s[advanced-1]
switch {
case cur >= '0' && cur <= '9':
number = 10*number + int(cur-'0')
case cur == '[':
adv, child := decode(s[advanced:])
advanced += adv
for range number {
buf.WriteString(child)
}
number = 0
case cur == ']':
break Loop
default:
buf.WriteByte(cur)
}
}
return advanced, buf.String()
}
func decodeString(s string) string {
_, ret := decode(s)
return ret
}
var _ = decodeString