我对问题中的代码及其在http://articles.leetcode.com/finding-minimum-window-in-s-which
的解决方案有一个具体的问题在图下面的代码中(不是图中的图),来自for循环的第5行代码
if (hasFound[S[end]] <= needToFind[S[end]]) **// WHY this condition is required???**
count++;
基于我的理解
1)这个if条件不需要而且只是(只要发现一个char只是增加计数,代表到目前为止找到的字符数)
count++;
2)OR可能是<
(而不是<=
)并且相等似乎对我没有意义
if (hasFound[S[end]] < needToFind[S[end]])
count++;
我测试过1)和2)但是他们都没有给我所有案例的正确答案。
仅if
条件<=
}为我提供了所有案例的正确解决方案。
我真的不明白为什么
if (hasFound[S[end]] <= needToFind[S[end]])
应该要求使这段代码适用于所有情况。
答案 0 :(得分:0)
想象一下,模式T包含3个字符A和2个字符B.
所以needToFind['A'] = 3
当hasFound['A']
变为1,2和3
当hasFound['A']
变为2时(你关于'&lt;'的命题),窗口只包含两个A字符,不可能生成T,而计数永远不会达到tLen=5
如果完全删除这个条件,5个字符A给count=5=tlen
,而窗口仍然不包含任何B