我正在嘗試解決go tour #43 中的難題,但我不明白為什么我的單詞計數器不起作用?!皃rint”似乎打印了預期值,但無論計數多少,測試都只看到“1”。package mainimport ( "code.google.com/p/go-tour/wc""strings" "unicode/utf8")func WordCount(s string) map[string]int { // explode the string into a slice without whitespaces ws := strings.Fields(s) //make a new map c := make(map[string]int) //iterate over each word for _, v := range ws{ c[v] = utf8.RuneCountInString(v) } print( c["am"]) return c}func main() { wc.Test(WordCount)}
2 回答

www說
TA貢獻1775條經驗 獲得超8個贊
你在解決錯誤的問題。它不會詢問您每個單詞的長度,而是詢問每個單詞出現的次數。改變
c[v] = utf8.RuneCountInString(v)
為了
c[v] += 1 // or c[v]++

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
問題是c[v] = utf8.RuneCountInString(v)
。它有兩個問題:
每次重新遇到它時,您都會為每個單詞重置計數器。你應該增加,而不是設置。
您正在將單詞中的符文數量設置為計數器。謎題是“一個單詞在文本中出現多少次”。所以只需執行類似的操作
c[v] = c[v] + 1
(如果條目為空,則默認為 0)
另外,我會將文本標準化 - 去除標點符號并將所有內容小寫。
- 2 回答
- 0 關注
- 199 瀏覽
添加回答
舉報
0/150
提交
取消