Leetcode/NeetCode

[SlidingWindow][Medium] 3. Longest Substring Without Repeating Characters

자전거통학 2024. 7. 9. 22:20

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

 

문자열이 주어질 때, char의 중복이 없는 가장 긴 sub string의 길이를 구하라.

 

 

전형적인 sliding window 문제. 

중복이 생기면 중복이 제거될 때까지 right를 당긴다. 

 

코드 

더보기
int lengthOfLongestSubstring(string s) 
{
    int left = 0, right = 0;
    set<char> setBuff;
    int maxLen = 0;
    for (; right < s.length(); ++right)
    {
        char cur = s[right];
        if (setBuff.find(cur) != setBuff.end())
        {
            while (left < s.length())
            {
                char chLeft = s[left];
                setBuff.erase(chLeft);
                ++left;
                if (chLeft == cur)
                    break;
            }
        }

        maxLen = max(maxLen, right - left + 1);
        setBuff.insert(cur);
    }
    return maxLen;
}

 

 

결과