【发布时间】:2014-05-24 12:15:41
【问题描述】:
我想创建一个算法来查找存在于字母表中的字符串中的子字符串。例如,在字符串“abcdefhhhasddasdabbba”中,我想查找由字母 {'a','b'}
生成的子字符串所以我的输出将是:ab ,a ,abbba
如果我使用有限状态,我必须创建包含我的输出的精确有限状态,所以我必须在我的 sting 输入长度上采用所有可能的组合,我认为这根本不是有效的。
如果我使用后缀树,那么如何在树中找到可能不是前缀或后缀的子字符串?我是否应该为每个节点使用一个数组来保存子树的数据,然后检查该数组是否包含字母表中未包含的字符?
编辑:
复杂性至关重要。
【问题讨论】:
-
这个问题的有限状态解决方案只需要两种状态:一种用于
{a,b},另一种用于字母表的其余部分。 -
我认为不是因为如果它只有 2 个状态,那么输出将得到 a ,b ,a ,b ...
标签: computer-science finite-automata suffix-tree