题目
给你一个英文单词库(数组),里面有十几万个英文单词,输入一个字符串,判断是不是某一个单词的前缀(或者判断是不是写错了)。
常见思路
遍历单词库,用 indexOf 判断前缀。
时间复杂度超过 O(n),要考虑 indexOf 的计算量。
hash table思路
哈希表是一个逻辑结构,任何一种语言都可以实现,比如:
- js 中使用 Object 或者 Map
- C 语言中结构体
- Java 中的 HashMap
哈希表通过 key 查询,时间复杂的为 O(1)。
const obj = {
a: {
a: {
},
b: {
},
...
},
b: {
},
...
}
时间复杂度变成了 O(m),m 代表单词的长度。但是代价是需要把英文单词转化为这样的一个哈希表,哈希表并不需要经常动,所以问题不大。