【问题标题】:Trie data structure特里数据结构
【发布时间】:2015-09-07 07:03:20
【问题描述】:

给定 N 个字符串。每个字符串仅包含来自a−j(包括两者)的小写字母。 N 个字符串的集合称为GOOD SET,如果没有字符串是另一个字符串的前缀,则为BAD SET

例如,aababcdeaabcdBAD SET,因为aabaabcd 的前缀。

如果满足问题要求,则打印GOOD SET。 否则,打印 BAD SET 和条件失败的第一个字符串。

输入格式:
第一行包含 N,即集合中的字符串数。 然后接下来是 N 行,其中第 i 行包含第 i 个字符串。

约束:
1≤N≤105 1 ≤ 字符串长度 ≤60

输出格式:
如果集合有效,则输出 GOOD SET
否则,输出 BAD SET,后跟条件失败的第一个字符串。

任何人都可以就此提出建议吗?

【问题讨论】:

  • 请提供您到目前为止所尝试的内容?

标签: data-structures stack


【解决方案1】:

构造一个trie,将每个字符串一个一个地插入到trie中,记录指向代表每个插入到trie中的字符串的节点的指针。完成后,扫描所有字符串的节点指针。如果其中任何一个在内部节点处结束,那么它就是一个 BAD SET。否则,(所有字符串都在不同的叶子上结束),这是一个很好的集合。时间和空间复杂度都与所有字符串的总长度成线性关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多