문제 링크 (opens new window)

# 문제 설명

  1. 브루트 포스로 풀면 시간초과 - O(1억)
    • 각 인덱스마다 매번 부분문자열 길이를 계산함
  2. 부분 문자를 저장하는 배열 마련한 뒤 removeSubrange를 활용하여 중복되지 않는 문자 리스트를 얻어오는 로직
class Solution {
    func lengthOfLongestSubstring(_ s: String) -> Int {
        var chars: [Character] = []
        var maxValue = 0
        for char in s {
            if let index = chars.firstIndex(of: char) {
                chars.removeSubrange(0...index)
            }
            chars.append(char)
            maxValue = max(chars.count, maxValue)
        }
        return maxValue
    }
}