找符合条件的最小子串

来源:互联网 发布:mac os升级不支持银联 编辑:程序博客网 时间:2024/05/18 13:08

实例

S = “ADOBECODEBANC”

T ="ABC"

S最小符合条件T的最小子串为“BANC”

Algorithm

这里首先要把t串字符放在哈希表中,碰到t中字符则减1,这里要注意hash中的个数可以为负数,因为比如abbbbbbca 找到abc很明显是最后一个子串,遍历到后面的b时,它可能有用。那么怎么判断要t中的字符全部都找到了呢?用一个变量cnt记录,如果hash表的个数大于0则+1。当cnt等于t的长度,代表t中字符都找到了,这时要做的事,就是找到最小的。用一个变量minLen记录最小,如果当前长度小于minLen,更新minLen和minl(子串起点)。接着我们要从此时的起点往右搜索,直到哈希表中有字符的个数重新大于0

代码