Leetcode/Top 100 Liked

[Sliding Window][Medium] 3. Longest Substring Without Repeating Characters

자전거통학 2024. 4. 18. 00:50

https://leetcode.com/problems/longest-substring-without-repeating-characters/description

 

Q. 주어진 문자열 s 에서 문자가 중복되지 않는 최대 sub string의 길이를 찾아라. 

 

Solution. 

 Sliding window + hash 문제. 

 

 중복이 생기면, left를 중복이 생기지 않을 때 까지 당긴다. 

 

더보기
public int LengthOfLongestSubstring(string s) 
{
    Dictionary<char, int> dictBuff = new Dictionary<char, int>();
    int left = 0, right = 0;
    int maxLen = 0;
    for(; right < s.Length; ++right)
    {
        char cur = s[right];
        if(!dictBuff.ContainsKey(cur))
        {
            dictBuff.Add(cur, 1);
            maxLen = Math.Max(maxLen, dictBuff.Count);
        }
        else
        {
            while(dictBuff.ContainsKey(cur))
            {
                dictBuff.Remove(s[left]);
                ++left;
            }
            dictBuff.Add(cur, 1);
        }
    }
    return maxLen; 
}

 

 

적절한 결과를 얻었다.