package main
import "strings"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return string字符串
*/
// 当前位置
var currPos int

// 原数据
var srcStr string

// dfs
func decodeString(s string) string {
	srcStr = s
	currPos = 0
	return decodeDFS()
}

func decodeDFS() string {
	if currPos == len(srcStr) || srcStr[currPos] == ']' {
		return ""
	}
	res := ""
	currVal := srcStr[currPos]
	//遇见数字
	if currVal >= '0' && currVal <= '9' {
		repeatNum := getDigital()
		//数字后面一定有],+1跳过[
		currPos++
		tmpRes := decodeDFS()
		//获取[]中的数据结束后,外层一定有],此处+1,跳过]
		currPos++
		res = strings.Repeat(tmpRes, repeatNum)
	} else {
		//遇见字母
		res = string(currVal)
		currPos++
	}
	return res + decodeDFS()
}

// 转数字
func getDigital() int {
	res := 0
	for ; srcStr[currPos] > '0' && srcStr[currPos] <= '9'; currPos++ {
		res = res*10 + int(srcStr[currPos]-'0')
	}
	return res
}