首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >每日一题(2022-04-17)——最常见的单词

每日一题(2022-04-17)——最常见的单词

作者头像
传说之下的花儿
发布2023-04-16 15:20:15
发布2023-04-16 15:20:15
27200
代码可运行
举报
运行总次数:0
代码可运行

819. 最常见的单词

题目描述:

给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。 返回出现次数最多,同时不在禁用列表中的单词。 题目保证至少有一个词不在禁用列表中,而且答案唯一。 禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。 [示例]: 输入:  paragraph = “Bob hit a ball, the hit BALL flew far after it was hit.”  banned = [“hit”] 输出: “ball” 解释:  “hit” 出现了3次,但它是一个禁用的单词。  “ball” 出现了2次 (同时没有其他单词出现2次),所以它是段落里出现次数最多的,且不在禁用列表中的单词。  注意,所有这些单词在段落里不区分大小写,标点符号需要忽略(即使是紧挨着单词也忽略, 比如 “ball,”),  "hit"不是最终的答案,虽然它出现次数更多,但它在禁用单词列表中。

题解:

注意: 不光要考虑ball,,这种情况,他还会出现a,b,c,d. 这种情况

代码语言:javascript
代码运行次数:0
运行
复制
func mostCommonWord(paragraph string, banned []string) string {
	// 将banned存入map,便于后续判断当前单词是否被ban
	bannedMap :=make(map[string]int)
	for _, s := range banned {
		bannedMap[s] = 0
	}
	// 转小写
	paragraph = strings.ToLower(paragraph)
	// 段落单词切片,除去标点符号
	var wordSlice []string
	// 单个单词的字母切片
	var cSlice []rune
	for i, c := range paragraph {
		if c >= 'a' && c <= 'z' {
			cSlice = append(cSlice, c)
			// 遍历到了最后
			if i==len(paragraph)-1 {
				wordSlice = append(wordSlice, string(cSlice))
				break
			}
		} else { // 遇到非字母字符,将上面的rune切片转成字符串存入单词切片
			if string(cSlice) == " "||len(string(cSlice))==0 {
				cSlice = []rune{}
				continue
			} else {
				wordSlice = append(wordSlice, string(cSlice))
				cSlice = []rune{}
				continue
			}
		}
	}
	// 已经出现过的单词的次数
	already := make(map[string]int)
	max := 0
	result := ""
	for _, word := range wordSlice {
		// 如果被ban 直接下一个单词
		if _,ok:=bannedMap[word];ok==true {
			continue
		}
		// 如果不存在 加入map 次数初始化为1
		if _, ok := already[word]; ok == false {
			already[word] = 1
		}else {
			already[word]++
		}
		if already[word] > max {
			max = already[word]
			result = word
		}
	}
	return result
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 819. 最常见的单词
    • 题目描述:
    • 题解:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档