解題思路
要找 s2 中存不存在 s1 的排列組合,又排列組合肯定是長度為 len(s1) 的,所以就想到用 sliding window,接下來就每次比較出現的字母數量就好。
程式碼
class Solution {
public:
bool checkInclusion(string s1, string s2) {
if(s1.size() > s2.size()) return false;
int countS1[26] = {0};
for(int i=0; i<s1.size(); i++)
countS1[s1[i] - 'a']++;
for(int i=0; i<(s2.size() - s1.size() + 1); i++)
{
int countS2[26] = {0};
for(int j=i; j<(i+s1.size()); j++)
{
countS2[s2[j] - 'a']++;
}
bool isSame = true;
for(int j=0; j<26; j++)
{
if(countS1[j] != countS2[j])
{
isSame = false;
break;
}
}
if(isSame)
return true;
}
return false;
}
};
沒有留言:
張貼留言