我想创建一种算法,在字母表中存在的字符串中查找子字符串。例如,在字符串“abcdefhhhasddasdabbba”中,我想找到由字母{'a','b'}
生成的子串所以我的输出将是:ab,a,abbba
如果我使用有限状态,我必须创建包含我的输出的精确有限状态,所以我将不得不采取所有可能的组合来确定它的效率。
如果我使用后缀树,那么如何在树中找到可能不是前缀或后缀的子串?我是否应该为每个节点使用一个数组来保存子树的数据,然后检查数组是否包含字母中未包含的字符?
编辑:
复杂性很糟糕。
答案 0 :(得分:2)
这可以通过简单的循环来完成,不需要数据结构。
for each letter in word
if letter in alphabet, then add it to a current "X"
otherwise emit current "X" and set "X" to empty string
python示例
word = 'aababadadadab'
alphabet = { 'a', 'b' }
X = ''
for letter in word + '$':
if letter in alphabet:
X += letter
else:
print X
X = ''
输出:
aababa
a
a
ab
我使用' $'作为字母表外部的特殊字符,用于简化代码