zoukankan      html  css  js  c++  java
  • [日常] Go语言*--Map习题

    练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。

    练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样可以按单词而不是按行输入。

    // Charcount computes counts of Unicode characters.
    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
        "unicode"
        "unicode/utf8"
    )
    
    func main() {
        //counts := make(map[string]map[rune]int)    // counts of Unicode characters
        var utflen [utf8.UTFMax + 1]int // count of lengths of UTF-8 encodings
        invalid := 0                    // count of invalid UTF-8 characters
    
        letters := make(map[rune]int)
        numbers := make(map[rune]int)
        in := bufio.NewReader(os.Stdin)
        for {
            r, n, err := in.ReadRune() // returns rune, nbytes, error
            if err == io.EOF {
                break
            }
            if err != nil {
                fmt.Fprintf(os.Stderr, "charcount: %v
    ", err)
                os.Exit(1)
            }
            if r == unicode.ReplacementChar && n == 1 {
                invalid++
                continue
            }
            /*
            练习 4.8: 修改charcount程序,使用unicode.IsLetter等相关的函数,统计字母、数字等Unicode中不同的字符类别。
            */
            //判断是字母
            if unicode.IsLetter(r){ 
                    letters[r]++
            }
            //判断是数字
            if unicode.IsNumber(r){
                    numbers[r]++
            }
            //counts[r]++
            utflen[n]++
        }
        fmt.Printf("rune	count
    ")
        for c, n := range letters {
            fmt.Printf("%q	%d
    ", c, n)
        }
        fmt.Printf("rune(number)	count
    ")
        for c, n := range numbers {
            fmt.Printf("%q	%d
    ", c, n)
        }
    
        fmt.Print("
    len	count
    ")
        for i, n := range utflen {
            if i > 0 {
                fmt.Printf("%d	%d
    ", i, n)
            }
        }
        if invalid > 0 {
            fmt.Printf("
    %d invalid UTF-8 characters
    ", invalid)
        }
    }
    
    package main
    
    import (
        "bufio"
        "fmt"
        //"io"
        "os"
        //"unicode"
        //"unicode/utf8"
    )
    
    func main() {
            counts := make(map[string]int)
            input := bufio.NewScanner(os.Stdin)
            input.Split(bufio.ScanWords)
            for input.Scan(){
                    counts[input.Text()]++
            }   
            for k,v :=range counts{
                    fmt.Printf("%s == %d 
    ",k,v)
            }   
    }
    /*
    练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样可以按单词而不是按行输入。
    */
    

      

      

  • 相关阅读:
    洛谷P1710 地铁涨价
    洛谷P1371 NOI元丹
    洛谷P2409 Y的积木
    洛谷P3392 涂国旗
    洛谷P3370 【模板】字符串哈希
    洛谷P3379 【模板】最近公共祖先(LCA)
    洛谷P3372 【模板】线段树 1
    洛谷P3373 【模板】线段树 2
    Android(java)学习笔记31:泛型高级之通配符
    Android(java)学习笔记30:泛型接口的概述和使用
  • 原文地址:https://www.cnblogs.com/taoshihan/p/8806446.html
Copyright © 2011-2022 走看看