[日常] Go语言圣经--Map习题
2023-02-18 15:41:36 时间
练习 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\n", 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\tcount\n") for c, n := range letters { fmt.Printf("%q\t%d\n", c, n) } fmt.Printf("rune(number)\tcount\n") for c, n := range numbers { fmt.Printf("%q\t%d\n", c, n) } fmt.Print("\nlen\tcount\n") for i, n := range utflen { if i > 0 { fmt.Printf("%d\t%d\n", i, n) } } if invalid > 0 { fmt.Printf("\n%d invalid UTF-8 characters\n", 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 \n",k,v) } } /* 练习 4.9: 编写一个程序wordfreq程序,报告输入文本中每个单词出现的频率。在第一次调用Scan前先调用input.Split(bufio.ScanWords)函数,这样可以按单词而不是按行输入。 */
相关文章
- PowerBI 四象限通用分析模式系列之一
- 微软宣布:PowerBI 已经与 Office 整合,一切更简单,变革又来了
- 业财融合用PowerBI怎么搞?一个案例一本书用二十四个模块告诉你答案
- Power BI 大换皮肤,迎来更新
- Power BI 量本利营亏平衡分析模型
- PowerBI 统一数据建模最佳实践 - 框架篇
- 使用Django快速搭建reportServer
- go-redis版本不一致导致CPU使用率问题
- Go的方法接收者:值接收者与指针接收者
- linux通过命令上传到s3(aws命令),支持所有平台
- Photoshop CS2软件下载地址及安装教程(mac+windows全版本PS,包括最新2023)
- Photoshop CS3软件下载地址及安装教程(mac+windows全版本PS,包括最新2023)
- Photoshop CS4软件下载地址及安装教程(mac+windows全版本PS,包括最新2023)
- C++ "链链"不忘@必有回响之双向链表
- C++ STL 概述_严丝合缝的合作者
- C++ 栈和典型的迷宫问题
- C++ 使用栈求解中缀、后缀表达式的值
- C++从 STL 中的队列开始说起
- C++ 不知树系列之初识树
- C++ 不知树系列之认识二叉树(数组、链表存储的实现)