您将获得一个长字符串(S)和一个禁止子字符串列表(F)。目标是将 ( S ) 划分为尽可能少的非空段,使得:
段的数量由包含禁止字符串的区域的数量决定。 如果禁止的字符串没有重叠,那么您只需切割每个禁止的字符串,调整切割以使段长度尽可能接近。
当禁止的字符串重叠时就会出现问题。 想象一下:
S = "abcdefa"
F = "bcd", "cde", "def"
现在所有 3 个禁止字符串都存在,但是有一个禁止字符串区域,即“bcdef”,无法通过一次切割来分割。输出可能是:“abc”、“de”、“fa”
所以算法一定是: