解題思路
要找 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; } };
沒有留言:
張貼留言