博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
careercup-中等难度 17.9
阅读量:4883 次
发布时间:2019-06-11

本文共 719 字,大约阅读时间需要 2 分钟。

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

解法:

1 单次查询

遍历这本书的每个单词,计算给定单词出现的次数。时间复杂度O(n),我们无法继续优化它,因为书中的每个单次都需要访问一次。当然,如果我们假设书中的单词是均匀分布的,那我们就可以只统计前半本书某个单次出现的次数,然后乘以2;或是只统计前四分之一本书某个单次出现的次数,然后乘以4。

2 多次查询

如果我们要重复执行查询,那么,或许值得我们多花些时间,多花些内存,对全书进行预处理。我们可以构造一个散列表,将单词映射到该单词的出现频率。这么一来,任意单词的频率就可以在O(1)时间内找的,具体事项代码如下:

#include
#include
#include
using namespace std;map
setupDictionary(string book[],int n){ int i; map
mp; for(i=0;i
&mp,string s){ return mp[s];}int main(){ string str[10]={ "a","b","a","c","d","d","e","f","e","e"}; map
mp=setupDictionary(str,10); cout<
<

 

转载于:https://www.cnblogs.com/wuchanming/p/4161020.html

你可能感兴趣的文章
mfcc的特征提取python 代码实现和解析
查看>>
ppt画笔标记在哪里|ppt中画笔工具功能怎么用?
查看>>
可以有效改进项目管理技能的十个过程(转载)
查看>>
python26实例[文件copy和自动rename]
查看>>
Python: Write UTF-8 characters to csv file
查看>>
TypeError: isinstance() arg 2 must be a type or tuple of types
查看>>
BZOJ4813: [Cqoi2017]小Q的棋盘
查看>>
AJAX相关总结
查看>>
VC++ 2010编译错误 fatal error C1189 error This file requires _WIN32_WINNT to be #defined at least...
查看>>
Flash中如何使用滤镜
查看>>
SpringBoot | 第十章:Swagger2的集成和使用
查看>>
bash shell redirecting code block
查看>>
【转】再说一说闭包
查看>>
Creating your own header file in C
查看>>
SSIS安装Oracle数据库连接的配置
查看>>
python基础之数据类型(二)
查看>>
Pyhon网络编程上篇
查看>>
使用EVM进行项目管理时的注意事项
查看>>
Sum of odd and even elements
查看>>
SL.XNA中的Popup
查看>>