【发布时间】:2016-06-02 06:03:06
【问题描述】:
给定一个长度为m 的字符串S 和一组其他长度等于或大于m 的字符串R。查找集合中具有S 作为子序列的字符串。
所以,如果 S 是 blr 并且字符串集是:
bangalore
booleer
bamboo
它应该返回前两个字符串。
我知道我可以找到长度为 m 的字符串 S 是否是其他长度为 n 的字符串 T 的子序列,时间复杂度为 O(n+m)。所以我知道我可以只对集合中的每个元素执行此算法,但这将是 O(k*(n+m)) 的时间复杂度,即 k 集合的大小(并假设所有字符串长度相同)。这让我想知道是否有某种预处理可以帮助我解决多个字符串的问题。
那么,我可以使用任何预处理或结构来解决这个问题吗? 我能达到的最佳时间复杂度是多少? 有没有其他方法可以解决这个问题?
【问题讨论】:
标签: string algorithm subsequence