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 }