Go 压缩字符
压缩算法
http://www.nowcoder.com/questionTerminal/c27561e5b7e0441493adb9a54071888d
测试用例
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)) }