程序员面试金典 - 面试题 16.02. 单词频率(哈希表/Trie树)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 哈希解法
      • 2.2 Trie树

1. 题目

设计一个方法,找出任意指定单词在一本书中的出现频率。

你的实现应该支持如下操作:

  • WordsFrequency(book)构造函数,参数为字符串数组构成的一本书
  • get(word)查询指定单词在数中出现的频率
示例:
WordsFrequency wordsFrequency = new WordsFrequency(
{"i", "have", "an", "apple", "he", "have", "a", "pen"});
wordsFrequency.get("you"); //返回0"you"没有出现过
wordsFrequency.get("have"); //返回2"have"出现2次
wordsFrequency.get("an"); //返回1
wordsFrequency.get("apple"); //返回1
wordsFrequency.get("pen"); //返回1提示:
book[i]中只包含小写字母
1 <= book.length <= 100000
1 <= book[i].length <= 10
get函数的调用次数不会超过100000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/words-frequency-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 哈希解法

class WordsFrequency {unordered_map<string,int> m;
public:WordsFrequency(vector<string>& book) {for(auto& s : book)m[s]++;}int get(string word) {return m[word];}
};

2.2 Trie树

参考Trie树

class Trie
{
public:unordered_map<char,Trie*> next;bool isEnd = false;int count = 0;void insert(string& s){Trie *root = this;for(char ch : s){if(!(root->next).count(ch)){Trie* node = new Trie();root->next.insert(make_pair(ch,node));}root = root->next[ch];}root->isEnd = true;root->count++;}int search(string& s){Trie * root = this;for(char ch : s){if(!(root->next).count(ch)){return 0;}root = root->next[ch];}if(root->isEnd)return root->count;return 0;}
};
class WordsFrequency {Trie *t;
public:WordsFrequency(vector<string>& book) {t = new Trie();for(string& b : book)t->insert(b);}int get(string word) {return t->search(word);}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

加州大学博士生Wendy:谈论文精读与方法创新

最近刷朋友圈&#xff0c;很多童鞋的状态都是&#xff0c;不是在搞科研&#xff0c;就是在搞科研的路上&#xff0c;每日为了科研废寝忘食……每天的生活日常&#xff0c;除了下文献、读文献&#xff0c;就是做实验、写论文&#xff0c;debug&#xff0c;二十多岁的自己看着像三…

小米10pro第二个摄像头下面_小米10至尊纪念版、小米10 Pro对比评测:至尊版“至尊”在哪里?...

在几天前的雷军十周年演讲中&#xff0c;小米10至尊纪念版正式面世&#xff0c;价格刚公布&#xff0c;就引起了不小轰动。在吃瓜群众看来&#xff0c;小米终于迈向了高端&#xff0c;毕竟最贵的版本&#xff0c;售价可以卖到6999元&#xff0c;和三星、苹果旗舰保持在一个水准…

转:程序员每天该做的事

程序员每天该做的事 1、总结自己一天任务的完成情况 最好的方式是写工作日志&#xff0c;把自己今天完成了什么事情&#xff0c;遇见了什么问题都记录下来&#xff0c;日后翻看好处多多 >> 好记性不如烂笔头。呵呵 2、考虑自己明天应该做的主要工作 把明天要做的事情…

MiOJ 3. 大数相减(字符串减法)

1. 题目 描述 两个长度超出常规整形变量上限的大数相减&#xff0c;请避免使用各语言内置大数处理库&#xff0c;如 Java.math.BigInteger 等。 输入 有 N 行测试数据&#xff0c;每一行有两个代表整数的字符串 a 和 b&#xff0c;长度超过百位。规定 a>b&#xff0c;a, …

Saleforce发布跨模态框架LAVIS,涵盖数据、任务、模型

作者 | HJZ来源 | 机器之心Salesforce 亚洲研究院推出了一站式视觉语言开源框架 LAVIS。视觉语言模型在内容推荐、电子商务里有广泛应用&#xff0c;例如图像描述生成、文本图像检索以及多模态内容分类。依托于海量互联网数据&#xff0c;多模型模型近期得到长足发展&#xff0…

python 跳过_python-pytest学习(九)-跳过用例skip

一、前言 pytest.mark.skip可以标记无法在某些平台上运行的测试功能&#xff0c;或者你希望是吧的测试功能。 skip意味着只有满足某些条件时才希望测试通过&#xff0c;否则pytest应该跳过运行测试。常见示例是在非windows平台上跳过仅限windows的测试&#xff0c;或跳过测试依…

Alexa世界排名原理+作弊源码,为网站赢得好排名

虽然说 Alexa世界排名存在水分&#xff0c;高低都无所谓&#xff0c;只要能在搜索引擎中排名靠前就好了&#xff0c;但是一些风险投资还是把它当作网站的一个参考依据&#xff0c;就迫使一些网站不得不提升自己的Alexa世界排名&#xff0c;那如何让你的网站在Alexa世界排名靠前…

matlab和python哪个运行快_MATLAB比Python快吗?

你可以在这个链接的底部找到一些有用的结果 从介绍开始A comparison of weave with NumPy, Pyrex, Psyco, Fortran (77 and 90) and C for solving Laplaces equation. 它还比较了MATLAB&#xff0c;并显示了与使用Python和NumPy时类似的速度。 当然&#xff0c;这只是一个特定…

LeetCode 1162. 地图分析(BFS)

1. 题目 你现在手里有一份大小为 N x N 的『地图』&#xff08;网格&#xff09; grid&#xff0c;上面的每个『区域』&#xff08;单元格&#xff09;都用 0 和 1 标记好了。其中 0 代表海洋&#xff0c;1 代表陆地&#xff0c;你知道距离陆地区域最远的海洋区域是是哪一个吗…

邹建老大写的经典SQL

邹建老大写的经典SQL/Files/602544/SQLServer2000.rar 转载于:https://www.cnblogs.com/602544/archive/2006/12/10/588210.html

sentinel 端口_双剑合璧Nacos结合Sentinel实现流量安全控制(一):Sentinel核心库和控制台...

Alibaba Sentinel 是一款高性能且轻量级的流量控制、熔断降级解决方案。是面向分布式服务架构的高可用流量控制组件。Sentinel 官网&#xff1a;https://sentinelguard.io/zh-cn/Github&#xff1a;https://github.com/alibaba/Sentinel一、Sentinel 是什么随着微服务的流行&am…

程序员面试金典 - 面试题 16.10. 生存人数(自定义优先队列)

文章目录1. 题目2. 解题2.1 优先队列2.2 双指针1. 题目 给定N个人的出生年份和死亡年份&#xff0c;第i个人的出生年份为 birth[i]&#xff0c;死亡年份为 death[i]&#xff0c;实现一个方法以计算生存人数最多的年份。 你可以假设所有人都出生于1900年至2000年&#xff08;含…

这篇CVPR文章真是妙蛙种子到了妙妙屋

文 | kid丶源 | 知乎Paper&#xff1a;CReST: A Class-Rebalancing Self-Training Framework for Imbalanced Semi-Supervised Learning这篇文章是在组会上听到的&#xff0c;觉得真的是太太妙了。本文考虑的是半监督场景下的长尾分布问题&#xff0c;即此时我们不仅没有足够的…

rss

rss页面的生成&#xff1a;请求rss.aspx,重定向到rss.ashx.由ForumRssHandler负责处理1。BuildFeed()&#xff0c;其中ForumRssWriter。在其中起了重要作用2. WriteFeed()。 订阅1先增加一个feedid 和对应的urlFeedReaderDataProvider.Instance().AddFeed();2.根据对应的url读出…

LeetCode 1394. 找出数组中的幸运数(map计数)

文章目录1. 题目2. 解题2.1 map计数2.2 Python3解1. 题目 在整数数组中&#xff0c;如果一个整数的出现频次和它的数值大小相等&#xff0c;我们就称这个整数为「幸运数」。 给你一个整数数组 arr&#xff0c;请你从中找出并返回一个幸运数。 如果数组中存在多个幸运数&…

阳光留在心底

很少在Blog上写自己的生活&#xff0c;很少在Blog上写自己的琐事&#xff0c;觉得没什么好写的。来这座城市8年了&#xff0c;从毕业到工作&#xff0c;所有的这3000多个日子过得很充实但是也很艰辛&#xff0c;我经常笑&#xff0c;因为没有什么能比笑容更能释放压力。  不知…

预训练模型的记忆机制解密!

文 | python近年来&#xff0c;大规模预训练语言模型给自然语言处理领域带来了翻天覆地的变化。一提到预训练模型为什么好&#xff0c;标准回答往往是&#xff1a;利用了无标注自监督学习数据&#xff0c;习得了语言学与语义知识&#xff0c;并有效迁移到下游任务中。然而&…

python中的列表和元组_百度资讯搜索_python中的列表和元组

腾讯网 11小时前# 元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。元组是一个有序列表,序列中的每个元素都分配一个数字(...百度快照数据分析师攻略 2020年11月11日 17:50分别使用max(tuple)、min(tuple)方法可以返回元组…

LeetCode 1395. 统计作战单位数(蛮力法)

1. 题目 n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。 每 3 个士兵可以组成一个作战单位&#xff0c;分组规则如下&#xff1a; 从队伍中选出下标分别为 i、j、k 的 3 名士兵&#xff0c;他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足…

站在2006的边缘

站在2006的边缘——代腾飞 2006年12月31日 于成都时光飞逝&#xff0c;中华元年2006年转眼来到了尽头明日清晨&#xff0c;冉冉升起的阳光将迎接新的一年的到来又将重新开始新的日月轮回站在这瞬间即逝的2006的边缘心潮难以宁静,我思索着、寻求着总想写下几句&#xff0c;也该…