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