NeetCode 150 / Sliding Window
MediumSliding WindowO(n)
ভিডিওতে দেখো — YouTube @algonur_com

কোড

Python
def checkInclusion(s1: str, s2: str) -> bool:
    if len(s1) > len(s2): return False
    cnt1, cnt2 = [0]*26, [0]*26
    for c in s1: cnt1[ord(c)-97] += 1
    for i in range(len(s2)):
        cnt2[ord(s2[i])-97] += 1
        if i >= len(s1): cnt2[ord(s2[i-len(s1)])-97] -= 1
        if cnt1 == cnt2: return True
    return False
Java
public boolean checkInclusion(String s1, String s2) {
    if (s1.length() > s2.length()) return false;
    int[] c1=new int[26], c2=new int[26];
    for (char c : s1.toCharArray()) c1[c-'a']++;
    for (int i=0; i<s2.length(); i++) {
        c2[s2.charAt(i)-'a']++;
        if (i >= s1.length()) c2[s2.charAt(i-s1.length())-'a']--;
        if (Arrays.equals(c1,c2)) return true;
    }
    return false;
}
Kotlin
fun checkInclusion(s1: String, s2: String): Boolean {
    if (s1.length > s2.length) return false
    val c1=IntArray(26); val c2=IntArray(26)
    for (c in s1) c1[c-'a']++
    for (i in s2.indices) {
        c2[s2[i]-'a']++
        if (i >= s1.length) c2[s2[i-s1.length]-'a']--
        if (c1.contentEquals(c2)) return true
    }
    return false
}
C++
bool checkInclusion(string s1, string s2) {
    if (s1.size() > s2.size()) return false;
    int c1[26]={}, c2[26]={};
    for (char c:s1) c1[c-'a']++;
    for (int i=0; i<s2.size(); i++) {
        c2[s2[i]-'a']++;
        if (i>=(int)s1.size()) c2[s2[i-s1.size()]-'a']--;
        if (equal(c1,c1+26,c2)) return true;
    }
    return false;
}
C
bool checkInclusion(char* s1, char* s2) {
    int n1=strlen(s1),n2=strlen(s2);
    if(n1>n2)return false;
    int c1[26]={0},c2[26]={0};
    for(int i=0;i<n1;i++){c1[s1[i]-'a']++;c2[s2[i]-'a']++;}
    for(int i=n1;i<n2;i++){
        int eq=1;for(int j=0;j<26;j++)if(c1[j]!=c2[j]){eq=0;break;}
        if(eq)return true;
        c2[s2[i]-'a']++; c2[s2[i-n1]-'a']--;
    }
    int eq=1;for(int j=0;j<26;j++)if(c1[j]!=c2[j]){eq=0;break;}
    return eq;
}

জটিলতা

O(n)
সময় — অ্যারেটা একবারই ঘুরি, ম্যাপে খোঁজা O(1)।
O(1)
জায়গা — সবচেয়ে খারাপ ক্ষেত্রে সব সংখ্যা ম্যাপে থাকে।
আগের সমস্যা← Longest Repeating Character Replacementপরের সমস্যাMinimum Window Substring →