以最小的步骤删除子串的所有发生

时间:2017-03-02 03:18:42

标签: string

我想找到我需要做的最小删除次数,以便子字符串不再出现在给定的字符串中。字符串和子字符串都只由小写字母组成。

例如,对于字符串" recorerecore"和子串" recore"我需要2次删除。

对于字符串" recorecore"和子串" recore"我只需要1。

对于string" recorecorecorecore"和子串" recore"我需要2,第一和第三,或第二和第四。

对于字符串" rerecorecore"我需要拿出1,第二次出现,因为第一次出局会导致再次重新出现。

我只能想到蛮力解决方案,它涉及实际删除所有可能的组合并找到最小值,但这需要太长时间。

有没有人知道更快地做到这一点的方法?

1 个答案:

答案 0 :(得分:0)

递归Boyer-Moore带有子串的字符串,并在找到它们时删除