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
}
}