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

কোড

Python
def lengthOfLongestSubstring(s: str) -> int:
    seen = {}
    l = best = 0
    for r, c in enumerate(s):
        if c in seen and seen[c] >= l:
            l = seen[c] + 1
        seen[c] = r
        best = max(best, r - l + 1)
    return best
Java
public int lengthOfLongestSubstring(String s) {
    Map<Character,Integer> seen = new HashMap<>();
    int l = 0, best = 0;
    for (int r = 0; r < s.length(); r++) {
        char c = s.charAt(r);
        if (seen.containsKey(c) && seen.get(c) >= l) l = seen.get(c) + 1;
        seen.put(c, r);
        best = Math.max(best, r - l + 1);
    }
    return best;
}
Kotlin
fun lengthOfLongestSubstring(s: String): Int {
    val seen = mutableMapOf<Char, Int>()
    var l = 0; var best = 0
    for ((r, c) in s.withIndex()) {
        if (seen.getOrDefault(c, -1) >= l) l = seen[c]!! + 1
        seen[c] = r
        best = maxOf(best, r - l + 1)
    }
    return best
}
C++
int lengthOfLongestSubstring(string s) {
    unordered_map<char,int> seen;
    int l=0, best=0;
    for (int r=0; r<s.size(); r++) {
        if (seen.count(s[r]) && seen[s[r]] >= l) l = seen[s[r]]+1;
        seen[s[r]] = r;
        best = max(best, r-l+1);
    }
    return best;
}
C
int lengthOfLongestSubstring(char* s) {
    int last[128]; memset(last,-1,sizeof(last));
    int l=0,best=0;
    for(int r=0;s[r];r++){
        int c=s[r];
        if(last[c]>=l) l=last[c]+1;
        last[c]=r;
        if(r-l+1>best)best=r-l+1;
    }
    return best;
}

জটিলতা

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