返回题目列表
COMP2521
Trie · 是不是一个已存单词
Trie · 是不是一个已存单词
先把 n 个小写单词插入一棵 Trie,再对 m 个查询,每个输出 yes(是一个已存单词)或 no(不是)。
最关键、也最容易错的一点:沿字符走到查询串末尾,只能说明它是某些已存词的前缀;它是不是一个被存过的完整单词,由末尾节点的 isEnd 决定。所以 search 的最后一步必须是 return cur->isEnd;,不能因为「路走通了」就直接 return true——那会把前缀(如已存 card 时查 ca)误判成单词。
insert 已给好,你只需补全 search:逐字符下降,遇到 child[c]==NULL 就 return false,走到末尾返回 cur->isEnd。
这正是 COMP2521 21T3 Q2 那类「某串是不是已存词 / 查找路径」的核心。
输入
- 第 1 行:待插入单词数
n。 - 接下来
n行:每行一个小写单词。 - 下一行:查询数
m。 - 接下来
m行:每行一个查询单词。
输出
m行,每行yes或no。
示例:存 car card dog,查 car ca card cat → yes / no / yes / no(ca 只是前缀、cat 路断了)。
样例
stdin
3 car card dog 4 car ca card cat
期望输出
yes no yes no
stdin
2 do dog 3 do dog doge
期望输出
yes yes no
c-dcc
14