在面试中有一个问题问到我,但我没有能够回答。
问题是:
给定一个有向图,其中每个节点都是一个字符,并且还给定一个字符串数组。任务是通过在图中搜索来计算数组中每个字符串的频率。
我的方法:我使用了trie和后缀树,但面试官并不完全满意。你能为这个问题提供一个算法吗?
在面试中有一个问题问到我,但我没有能够回答。
问题是:
给定一个有向图,其中每个节点都是一个字符,并且还给定一个字符串数组。任务是通过在图中搜索来计算数组中每个字符串的频率。
我的方法:我使用了trie和后缀树,但面试官并不完全满意。你能为这个问题提供一个算法吗?
这是另一种解决方案:
首先,我们需要对字符串数组进行一些预处理。 让我们将C定义为数组中所有字符串组成的字符的子集。 对于C中的每个字符,我们将跟踪包含该字符的每个字符串及其在该字符串中的位置以及一个布尔值,指示它是否是该字符串中的最后一个字符。 这可以使用字典完成。
例如,假设我们的数组是['one', 'two', 'three']。 我们的字典看起来像这样:
'o': (0, 0, false),(1,2,true)
't': (1, 0, false),(2,0,false)
'n': (0, 1, false)
'e': (2, 3, false),(2,4, true)
'h': (2, 1, false)
'r': (2, 2, false)
'w': (2, 1, false)
可能会有很多次出现。
我认为他可能期望使用动态规划
:
单独处理每个字符串,f[i][j]
表示从节点i
开始完成字符串的最后j
个字母的总数,其余部分将很容易解决。