美文网首页
Golang提交OJ题目笔记

Golang提交OJ题目笔记

作者: 江海小流 | 来源:发表于2019-10-05 15:22 被阅读0次

    输入输出(比较慢,针对较小的数据量)

    输入:

    4
    abcd
    

    处理代码:

    var (
      n int
      s []byte // or string
    )
    
    fmt.Scan(&n)
    fmt.Scan(&s)
    

    or

    fmt.Scanf("%d\n", &n) // 如果不加 '\n',再次读入 s时,会读入失败(cf)
    fmt.Scanf("%s\n", &s)
    

    3. 输入输出 (针对大量数据)

    func (inputReader *InputReader) init() {
        inputReader.buf, _ = ioutil.ReadAll(os.Stdin)
        inputReader.size = len(inputReader.buf)
    }
    
    func (inputReader *InputReader) readInt() int {
        inputReader.skip()
        if inputReader.eof() {
            panic("Can not read")
        }
    
        sign := 1
        if inputReader.buf[inputReader.cursor] == '-' {
            sign *= -1
        }
    
        ret := 0
        for inputReader.cursor < inputReader.size && unicode.IsDigit(rune(inputReader.buf[inputReader.cursor])) {
            ret = 10 * ret + int(inputReader.buf[inputReader.cursor]) - int('0');
            inputReader.cursor ++
        }
        return ret
    }
    
    func (inputReader *InputReader) skip() {
        for inputReader.cursor < inputReader.size && unicode.IsSpace(rune(inputReader.buf[inputReader.cursor])) {
            inputReader.cursor ++
        }
    }
    
    func (inputReader *InputReader) eof() bool {
        return inputReader.cursor >= inputReader.size
    }
    

    相关文章

      网友评论

          本文标题:Golang提交OJ题目笔记

          本文链接:https://www.haomeiwen.com/subject/gsxyuctx.html