从字符串'A'中删除最小字母以删除字符串'B'的所有实例

a_t*_*rie 17 string algorithm

如果我们有A长度为N的字符串B和长度为M的字符串,其中M <N,我可以快速计算我必须从字符串中删除的最小字母数,A以便字符串B不会作为子字符串出现A吗?

如果我们有微小的字符串长度,这个问题是很容易蛮力:您刚刚从迭代位掩码02^N看看B发生在这个序列的子字符串A.然而,当N可以达到10,000并且M可以达到1,000时,该算法显然会迅速崩溃.有更快的方法吗?

示例:A = ababaaB = aba.答案=.在A中1删除第二个a将导致abbaa,但不包含B.

编辑:用户nm发布了一个很好的反例:aabccabc.我们想要删除单个b,因为删除任何ac将创建该字符串的另一个实例abc.

Bar*_* W. 0

你能对字符串进行图形搜索吗A?对于大 N 和特殊输入来说,这可能太慢,但它应该比指数蛮力算法更好。也许是 BFS。