0003 Longest Substring Without Repeating Characters
Solved at: 2023-01-30 Longest Substring Without Repeating Characters - LeetCode
Questionโ
Given a string s
, find the length of the longest substring without repeating characters.
Solutionโ
class Solution {
func lengthOfLongestSubstring(_ s: String) -> Int {
var maxLength = 0
var substring = ""
for (idx, char) in s.enumerated() {
var candidate = substring + String(char)
while candidate.count != Set(candidate).count {
candidate = String(candidate[String.Index(encodedOffset: 1)...])
}
if candidate.count > maxLength {
maxLength = candidate.count
}
substring = candidate
}
return maxLength
}
}
Resultsโ
- Time taken: 6 m 48 s
- Runtime 645 ms, Beats 9.21%
- Memory 14.8 MB, Beats 43.95%
Complexity Analysisโ
We can use an array to make this
We can replace candidate.count != Set(candidate).count
to using Sets to check in time, given at one given point substring
must have distinct characters.
Takeawaysโ
Using constant array with alphabets as an index can also replace set.