trie

坑系列 --- 时间和空间的平衡

这是坑系列的最后一弹了,这篇文章非常长,希望你能看完,要是看完有很酣畅的感觉就最好了。这一篇的坑主要来说说架构中时间和空间的平衡吧,这里的时间指代比较广,可能是开发时间,但大部分指的是执行时间,也就是算法的时间复杂度了,而空间就是算法中经常说的空间换时间中的空间了,一个好的系统,设计出来必然是各种时间复杂度和空间复杂度平衡出来的结果,架构设计的过程,并不仅仅是模块的堆叠,在

words abbreviation

题目:在一个字典里有一堆英文单词,现在要把这些单词缩写成(前缀 + 字符串长度 + 尾字母)的形式,而且现在有两个限制条件:(1)要求缩写后的字符串可以唯一表示原单词;(2)有相同长度的单词在缩写后放在一起。分析:(1)trie树的大多数功能可以用HashTable来替代,但是prefix功能是HashTable不好做到的。由于最终的缩写需要考虑前缀,所以选择trie这种数

Design CML-TAB

题目:题目很简单,就是设计command line里的tab键,自由发挥。设计功能:(1)返回可能命令集:如果当前字符串是若干个命令字符串的最长共同前缀,返回可能的命令字符串列表;(2)自动补全:如果当前字符串是若干命令字符串的共同前缀,但不是最长共同前缀,则将其补充到最长前缀。eg:dic{document, doctor},输入Tab("d"), 返回"doc";(3)