如何确定字符串S可以通过删除一些字符来从字符串T中进行,但最多可以是K个连续字符

Lov*_*per 13 string algorithm

抱歉,长标题:)

在这个问题中,我们有S长度的n字符串T和长度的字符串m.我们可以在时间复杂度O(n + m)中检查字符串S的子序列T.这很简单.

我很好奇:如果我们可以删除最多K连续的字符怎么办?例如,如果K = 2,我们可以"ab""accb",但不从"abcccb".我想检查它是否可能非常快.

我只能发现很明显O(nm):检查字符串S和字符串中的每个后缀对是否可能T.我认为也许贪婪的算法是可能的,但如果K = 2,情况S = "abc"并且T = "ababbc"是一个反例.

有没有解决这个问题的快速解决方案?

小智 0

不确定这是否是您所要求的,但您可以从每个字符串创建一个字符列表,并在另一个列表中搜索一个列表的实例,然后 if(list2.length-K > list1.length) 返回 false。