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
}