0%
题目如下
- 有一个英文单词库(数组),里面有几十万个英文单词
- 输入一个字符串,快速判断是不是某一个单词的前缀
思路如下
常规思路
- 遍历单词库数组
- indexOf判断前缀
- 实际时间复杂度超过了O(n) 因为要考虑indexOf 的计算量
优化
- 英文字母一共26个,可以提前把单词库数组拆分成为26个
- 既然第一层拆分为26个,第二层、第三层,还可以继续分
- 最后把单词库拆分为一棵树
性能分析
- 如遍历数组,时间复杂度至少O(n)起步(n是数组长度)
- 而改为树,时间复杂度降低到O(m)(m是单词长度)
- PS:哈希表(对象)通过key查询,时间复杂度是O(1)