测试用例
HG[3|B[2|CA]]F
BHCJSBCSCW[100|DASKDNKJWDNWCNQWCNOQCNQWOICNWQOINCWQOICNQWOIXWOISWIODAOWPQWDMQKOQZCDWF]WQJDWQUINCQQW[99|SDWQJCIQIUWCNQUCNWQIDNWQUIFNSALQP]DQOJOIXZALPPQQAAX
code:
import (
"bufio"
"bytes"
"os"
"strconv"
"strings"
"fmt"
)
func decode(str string) string {
for i := 0; i < len(str);i++ {
if str[i] == ']' {
flag := i
var line int
for ; str[flag] != '[' && flag >= 0; flag-- {
if str[flag] == '|' {
line = flag
}
}
num, _ := strconv.Atoi(str[flag+1 : line])
tempStr := str[line+1 : i]
var buffer bytes.Buffer
for i := 0; i < num; i++ {
buffer.WriteString(tempStr)
}
tempStr=buffer.String()
str = strings.Replace(str, str[flag:i+1], tempStr, 1)
i = flag
}
}
return str
}
func main() {
in := bufio.NewScanner(os.Stdin)
in.Scan()
str := in.Text()
fmt.Println(decode(str))
}