14)字符串中的变位词
class Solution {
public:
bool checkInclusion(string s1, string s2) {
int m=s1.size(), n=s2.size();
if(m>n) return false;
vector<int> vec(26);
for(int i=0; i<m; i++){
vec[s1[i]-'a']++;
}
int left=0;
for(int right=0; right<n; right++){
int x = s2[right] - 'a';
vec[x]--;
while(vec[x]<0){
vec[s2[left]-'a']++;
left++;
}
if(right-left+1==m) return true;
}
return false;
}
};
15)字符串中的所有变位词
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
int m=s.size(), n=p.size();
vector<int> res;
if(m<n) return res;
vector<int> vec(26);
for(int i=0; i<n; i++){
vec[p[i]-'a']++;
}
int left=0;
for(int right=0; right<m; right++){
int x = s[right] -'a';
vec[x]--;
while(vec[x]<0){
vec[s[left]-'a']++;
left++;
}
if(right-left+1==n) res.push_back(left);
}
return res;
}
};
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.size();
unordered_map<char, int> map;
int left=0, maxLen=0;
for(int right=0; right<n; right++){
map[s[right]]++;
while(map[s[right]]!=1){
map[s[left]]--;
left++;
}
maxLen = max(right-left+1, maxLen);
}
return maxLen;
}
};