算法:英文单词的前缀匹配-hash table

题目

给你一个英文单词库(数组),里面有十几万个英文单词,输入一个字符串,判断是不是某一个单词的前缀(或者判断是不是写错了)。

常见思路

遍历单词库,用 indexOf 判断前缀。

时间复杂度超过 O(n),要考虑 indexOf 的计算量。

hash table思路

哈希表是一个逻辑结构,任何一种语言都可以实现,比如:

  • js 中使用 Object 或者 Map
  • C 语言中结构体
  • Java 中的 HashMap

哈希表通过 key 查询,时间复杂的为 O(1)。

const obj = {
    
    
	a: {
    
    
		a: {
    
    

		},
		b: {
    
    
			
		},
		...
	},
	b: {
    
    

	},
	...
}

时间复杂度变成了 O(m),m 代表单词的长度。但是代价是需要把英文单词转化为这样的一个哈希表,哈希表并不需要经常动,所以问题不大。

猜你喜欢

转载自blog.csdn.net/weixin_43972437/article/details/130449194