2024-10-05 Daily Challenge
Today I have done leetcode's October LeetCoding Challenge with cpp
.
October LeetCoding Challenge 5
Description
Permutation in String
Given two strings s1
and s2
, return true
if s2
contains a permutation of s1
, or false
otherwise.
In other words, return true
if one of s1
's permutations is the substring of s2
.
Example 1:
Input: s1 = "ab", s2 = "eidbaooo" Output: true Explanation: s2 contains one permutation of s1 ("ba").
Example 2:
Input: s1 = "ab", s2 = "eidboaoo" Output: false
Constraints:
1 <= s1.length, s2.length <= 104
s1
ands2
consist of lowercase English letters.
Solution
class Solution {
public:
bool checkInclusion(string s1, string s2) {
if(s1.length() > s2.length()) return false;
map<char, int> count;
for(auto c : s1) {
count[c] += 1;
}
int len1 = s1.length();
for(int i = 0; i < len1; ++i) {
count[s2[i]] -= 1;
if(!count[s2[i]]) count.erase(s2[i]);
}
if(count.empty()) return true;
for(int i = s1.length(); i < s2.length(); ++i) {
count[s2[i - len1]] += 1;
if(!count[s2[i - len1]]) count.erase(s2[i - len1]);
count[s2[i]] -= 1;
if(!count[s2[i]]) count.erase(s2[i]);
if(count.empty()) return true;
}
return false;
}
};