为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在 golang tour #43 中的 word counter 不起作用?

为什么我在 golang tour #43 中的 word counter 不起作用?

Go
肥皂起泡泡 2021-07-27 21:08:37
我正在尝试解决go tour #43 中的难题,但我不明白为什么我的单词计数器不起作用。“print”似乎打印了预期值,但无论计数多少,测试都只看到“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]++


查看完整回答
反对 回复 2021-08-02
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

问题是c[v] = utf8.RuneCountInString(v)。它有两个问题:

  1. 每次重新遇到它时,您都会为每个单词重置计数器。你应该增加,而不是设置。

  2. 您正在将单词中的符文数量设置为计数器。谜题是“一个单词在文本中出现多少次”。所以只需执行类似的操作c[v] = c[v] + 1(如果条目为空,则默认为 0)

另外,我会将文本标准化 - 去除标点符号并将所有内容小写。


查看完整回答
反对 回复 2021-08-02
  • 2 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号