394. 字符串解码
mid
辅助栈
import "strconv"
type node struct {
	prevRes  string
	curMulti int
}
func decodeString(s string) string {
	stack := make([]node, 0)
	multi, tmpStr := 0, ""
	for i := 0; i < len(s); i++ {
		if '0' <= s[i] && s[i] <= '9' {
			// 累计数字
			num, _ := strconv.Atoi(string(s[i]))
			multi = multi*10 + num
		} else if s[i] == '[' {
			// 将之前的结果和这次的重复个数入栈
			stack = append(stack, node{prevRes: tmpStr, curMulti: multi})
			// 清空
			multi, tmpStr = 0, ""
		} else if s[i] == ']' {
			// 出栈 结算
			curNode := stack[len(stack)-1]
			stack = stack[:len(stack)-1]
			prevRes := curNode.prevRes
			for j := 0; j < curNode.curMulti; j++ {
				prevRes += tmpStr
			}
			tmpStr = prevRes
		} else {
			// 字母
			tmpStr += string(s[i])
		}
	}
	return tmpStr
}