17.9设计一个函数,找到给定单词在一本书中的出现次数

本文讨论了如何利用哈希表预处理书籍内容,通过哈希表存储单词及其频率,实现快速查询单词出现次数,优化查询效率。文中详细介绍了如何忽略大小写差异,并提供了一个简单的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cc 17.9 hashtable应用

首先需要考虑这个函数被调用的次数,如果只查询一次,直接遍历整本书,计算给定单词次数。时间只能是O(N)。


正常情况下通常需要可以多次调用

这样pre-processing the book,use hashtable to store word, frequency. then we can easily look up by O(1) time.

代码很简单,就是建立hashtable,然后查找

其中:word忽略大小写区别,所以可以都转换为小写,trim() != “ “

public int findword(Hashtable<String, Integer> map, String word){
	if(word == null || map == null) return -1; // wrong situation
	/*****here we ignore diff between uppercase and lowercase****/
	word = word.toLowerCase();
	if(map.containsKey(word)){
		return map.get(word);
	}
	return 0;
}
//set up hashtable for the book
private Hashtable<String, Integer> setupDic(String[] book){
	Hashtable<String, Integer> map = new Hashtable<String, Integer>();
	
	for(String s : book){
		/*****corner case******************/
		if(s.trim() == "") continue;
		/********************************/
		s = s.toLowerCase();
		if(map.containsKey(s)){
			map.put(s, map.get(s) + 1);
		}else map.put(s, 1);
	}
	
	return map;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值