Daily LeetCode Challenge - 3. Longest Substring Without Repeating Characters

Min Young Kim·2023년 5월 28일
0

algorithm

목록 보기
156/198

Problem From.

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

오늘 문제는 주어진 string 중에서 반복되지 않은 알파벳을 가진 가장 긴 substring 을 구하는 문제였다.

이 문제는 sliding window 알고리즘을 통해서 풀 수있었는데, 먼저 start 와 end 를 지정해두고 set 을 하나 둔다.
주어진 string 을 처음부터 검사해나가면서, 각각의 알파벳에서 시작하여 set 을 통해 검사하면서 end 지점을 늘려나간다. 같은 원소가 나오면 end 를 늘리는것을 멈추고 set 의 사이즈중에 max 값을 정답과 비교하여 저장한 뒤 마지막에 반환해주면 된다.

class Solution {
    fun lengthOfLongestSubstring(s: String): Int {

        var answer = 0
        val set = hashSetOf<Char>()

        var start = 0
        var end = 0
        s.forEach {
            if(set.contains(it)){
                while(set.contains(it)) {
                    set.remove(s[start])
                    start += 1
                }
            }else {
                end += 1
            }
            set.add(it)
            answer = Math.max(answer, set.size)
        }

        return answer
    }
}
profile
길을 찾는 개발자

0개의 댓글