24. map字典測(cè)試用例(文字出現(xiàn)次數(shù)統(tǒng)計(jì))

利用map實(shí)現(xiàn)字符串內(nèi)文字出現(xiàn)次數(shù)的統(tǒng)計(jì)。
編寫一個(gè)測(cè)試用例,對(duì)文字計(jì)數(shù)函數(shù)的功能進(jìn)行測(cè)試。
測(cè)試通過,則打印文字出現(xiàn)次數(shù)的統(tǒng)計(jì)結(jié)果

package main

import (
    "fmt"
    "strings"
)
//測(cè)試調(diào)用
func Test(f func(string) map[string]int) {
    ok := true
    for _, c := range testCases {
        got := f(c.in)
        if len(c.want) != len(got) {
            ok = false
        } else {
            for k := range c.want {
                if c.want[k] != got[k] {
                    ok = false
                }
            }
        }
        if !ok {
            fmt.Printf("FAIL\n f(%q) =\n  %#v\n want:\n  %#v",
                c.in, got, c.want)
            break
        }
        fmt.Printf("PASS\n f(%q) = \n  %#v\n", c.in, got)
    }
}

//測(cè)試用例
var testCases = []struct {
    in   string
    want map[string]int
}{
    {"I am learning Go!", map[string]int{
        "I": 1, "am": 1, "learning": 1, "Go!": 1,
    }},
    {"The quick brown fox jumped over the lazy dog.", map[string]int{
        "The":  1, "quick": 1, "brown": 1, "fox": 1, "jumped": 1,
        "over": 1, "the": 1, "lazy": 1, "dog.": 1,
    }},
    {"I ate a donut. Then I ate another donut.", map[string]int{
        "I": 2, "ate": 2, "a": 1, "donut.": 2, "Then": 1, "another": 1,
    }},
    {"A man a plan a canal panama.", map[string]int{
        "A": 1, "man": 1, "a": 2, "plan": 1, "canal": 1, "panama.": 1,
    }},
}
//文字出現(xiàn)次數(shù)統(tǒng)計(jì)
func WordCount(s string) map[string]int {
    s0 := strings.Fields(s)

    s1 := make(map[string]int)
    for _, k := range s0 {
        _, ok := s1[k]
        if !ok {
            s1[k] = 1
        }else{
            s1[k] += 1
        }
    }

    return s1
    //return map[string]int{"x": 1}
}

func main() {
    Test(WordCount)
}

WordCount實(shí)現(xiàn)文字次數(shù)統(tǒng)計(jì)
s0是對(duì)原來句子中的文字建立切片
s1是統(tǒng)計(jì)后的結(jié)果map,每個(gè)文字都是一個(gè)鍵
運(yùn)行效果

PASS
 f("I am learning Go!") = 
  map[string]int{"I":1, "am":1, "learning":1, "Go!":1}
PASS
 f("The quick brown fox jumped over the lazy dog.") = 
  map[string]int{"brown":1, "the":1, "jumped":1, "over":1, "lazy":1, "dog.":1, "The":1, "quick":1, "fox":1}
PASS
 f("I ate a donut. Then I ate another donut.") = 
  map[string]int{"ate":2, "a":1, "donut.":2, "Then":1, "another":1, "I":2}
PASS
 f("A man a plan a canal panama.") = 
  map[string]int{"A":1, "man":1, "a":2, "plan":1, "canal":1, "panama.":1}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目的這篇教程從用戶的角度出發(fā),全面地介紹了Hadoop Map/Reduce框架的各個(gè)方面。先決條件請(qǐng)先確認(rèn)Had...
    SeanC52111閱讀 1,836評(píng)論 0 1
  • MapReduce執(zhí)行流程 MapReduce的執(zhí)行步驟 1、Map任務(wù)處理 1.1 讀取HDFS中的文件。每一行...
    依天立業(yè)閱讀 2,334評(píng)論 0 8
  • 轉(zhuǎn)自: 結(jié)構(gòu)之法算法之道blog 前言 一般而言,標(biāo)題含有“秒殺”,“99%”,“史上最全/最強(qiáng)”等詞匯的往往都...
    王帥199207閱讀 1,245評(píng)論 0 13
  • 心里的人總在遠(yuǎn)方 而我 向往遠(yuǎn)方 卻又害怕遠(yuǎn)方 情緒上來的時(shí)候我需要以自己的方式釋放一下 比如一個(gè)人哭一會(huì)兒 然后...
    傻瓜與智者閱讀 385評(píng)論 0 1
  • 簡(jiǎn)書一篇 看了簡(jiǎn)書的風(fēng)格,自己覺得挺喜歡。 現(xiàn)在還搞不清楚簡(jiǎn)書上面都可以寫哪類的文字,流水賬先來一筆吧。 希望在以...
    無思想家閱讀 222評(píng)論 0 0

友情鏈接更多精彩內(nèi)容