Go 压缩字符

压缩算法

http://www.nowcoder.com/questionTerminal/c27561e5b7e0441493adb9a54071888d

测试用例

  1. HG[3|B[2|CA]]F

  2. 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))

}
全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
04-08 00:50
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务