您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何找到包含给定字符串中所有字符的最小子字符串?

如何找到包含给定字符串中所有字符的最小子字符串?

您可以在O(N+M)时间和O(1)空间上进行直方图扫描,其中N是第一个字符串中M的字符数,而第二个字符串中的字符数。

它是这样的:

请注意,通过改变您在直方图条件上使用的检查,您可以选择具有 第二个字符串 相同的字符集 ,或者 每种类型的字符数最少 。(它只是之间的差异a[i]>0 && b[i]>0a[i]>=b[i]。)

如果您跟踪想要满足的条件不满足的条件,则可以加快直方图的检查速度,并在尝试破坏条件时仅检查您递减的值。(在初始构建时,您要计算满足的项目数,并在每次添加将条件从false变为true的新字符时递增该计数。)

其他 2022/1/1 18:14:02 有575人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶