题意:给定一组单词,然后问要怎样的字符串前缀来表示单词,才能没有歧义(要求前缀越短越好)
很明显的一道字典树。我们在node节点里加多一个key值,用来表示当前节点出现了几次。然后每次搜一个单词的缩写时,我们从根节点开始搜,不断输出,知道发现该值为1(这种情况说明只有一个单词出现在这里)。
关于字典树还有一个地方值得注意,一些字典树的写法是,在需要节点时再动态分配(用node*temp=new node()),但这样一次一次的分配会降低效率,一种做法是,直接定义一个足够大的数组,然后用一个top指向当前值(初始化为1),然后每分配一个node,就把top+1,这样能提高代码执行速度,我用第一种时间是32ms,第二种是16ms
代码如下: