| 12345678910111213141516171819202122232425262728293031323334353637383940 | func decodeString(s string) string {	var sb strings.Builder	beg, n := 0, len(s)	for i := 0; i < n; {		if '0' <= s[i] && s[i] <= '9' {			sb.WriteString(s[beg:i])			num, lb, rb := findNext(s, i) // Left bracket, right bracket			substr := decodeString(s[lb+1 : rb])			for j := 0; j < num; j++ {				sb.WriteString(substr)			}			beg, i = rb+1, rb+1		} else {			i++		}	}	if beg != n { // Write the last part		sb.WriteString(s[beg:n])	}	return sb.String()}func findNext(s string, beg int) (int, int, int) {	lb := beg + 1	for ; s[lb] != '['; lb++ {	} // Find lb	num, _ := strconv.Atoi(s[beg:lb]) // Get repeat count	cnt, n := 0, len(s)	for i := lb; i < n; i++ {		if s[i] == '[' {			cnt++		} else if s[i] == ']' {			cnt--			if cnt == 0 {				return num, lb, i // Find rb			}		}	}	return num, lb, lb // Error}
 |