class Solution {
private:
unordered_map<char, int> need, window;
public:
bool checkInclusion(string s1, string s2) {
for (char c : s1) need[c]++;
int left = 0, right = 0, valid = 0, len = INT_MAX;
while (right < s2.size())
{
char c = s2[right++];
if (need.count(c))
{
window[c]++;
if (window[c] == need[c])
valid++;
}
while (valid == need.size())
{
if (right - left < len)
len = right - left;
if (len == s1.size())
return true;
char d = s2[left++];
if (need.count(d))
{
if (window[d] == need[d])
valid--;
window[d]--;
}
}
}
return false;
}
};
【中等】字符串的排列
最新推荐文章于 2024-07-22 16:27:42 发布