ভিডিওতে দেখো — 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 FalseJava
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 →