题目要求,s1字符串的组合是s2字符串的子串
也就意味着,s1是不按照顺序,只要在s2中存在即可满足题意。
也就等同于s1与s2的某个区间的字符串的字符种类个数都相同。
所以通过vector可以直接对上述两个进行比较。
class Solution {
public:
bool checkInclusion(string s1, string s2) {
int s1len = s1.length();
int s2len = s2.length();
vector <int > v1(26),v2(26);
if(s1len>s2len)
{
return false;
}
for(int i=0;i<s1len;i++)
{
v1[s1[i]-'a']++;
v2[s2[i]-'a']++;
}
if(v1==v2)
{
return true;
}
for(int j=s1len;j<s2len;j++)
{
v2[s2[j-s1len]-'a']--;
v2[s2[j]-'a']++;
if(v1==v2)
{
return true;
}
}
return false;
}
};