听一个朋友说她facebook onsite考了这题原题,果断有动力刷起。
看了leetcode上的思路,讲的非常清晰,特别是他画的图,很直观。 http://leetcode.com/2010/11/finding-minimum-window-in-s-which.html
思路是维护一个窗口,窗口一直满足包含所有T中的字符。作者里面是维护两个array, 一个needToFind, 一个hasFound. 我感觉用hash map 更顺些,不过其实差不多,个人习惯。needToFound stores the total count of a character in T and hasFound stores the total count of a character met so far. 然后用一个count记录符合的字符数,当字符数等于T长度的时候,就是一个valid window. 当符合条件了,我们继续移动右边直到有一个字符出现多次了,开始尝试移动左边,左边不在T里的字符可以直接跳过。