문제
https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
입력
s: String = 문자열
0 <= s.length <= 5 * 104
결과
ans: Int = 가장 긴 반복되지 않은 부분문자열 길이
해석
이제는 생각보다 빠르게 카테고리를 캐치해낸 것 같다.
두개의 포인터를 가지고 이전에 나왔던 문자열이 나오면 왼쪽 인덱스가 증가하고 그렇지 않으면
오른쪽 인덱스가 증가하는 조건이 될 것 같다.
코드
import Foundation
class Solution {
func lengthOfLongestSubstring(_ s: String) -> Int {
let arr = Array(s)
let n = arr.count
var ans: Int = 0
var l: Int = 0
var r: Int = 0
var checkDict: [Character: Bool] = [:] // 중복체크 딕셔너리
while r < n {
if checkDict[arr[r], default: false] == false { // 존재하지 않을 때
checkDict[arr[r]] = true
r += 1
} else { // 존재할 때
ans = max(ans, r - l) // 길이 측정
checkDict[arr[l]] = false
l += 1
}
}
ans = max(ans, r-l) // 마지막 체크
return ans
}
}
'PS > LeetCode' 카테고리의 다른 글
Product of Array Except Self (0) | 2025.01.05 |
---|---|
Best Time to Buy and Sell Stock (0) | 2025.01.05 |
Two Sum (0) | 2025.01.05 |
[LeetCode] 647. Palindromic Substrings (0) | 2024.10.15 |
[LeetCode] 459. Repeated Substring Pattern (0) | 2024.10.15 |