/
solution.ts
29 lines (27 loc) · 1.01 KB
/
solution.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #String #Hash_Table #Sliding_Window
// #Algorithm_I_Day_6_Sliding_Window #Level_2_Day_14_Sliding_Window/Two_Pointer #Udemy_Strings
// #Big_O_Time_O(n)_Space_O(1) #2023_09_28_Time_65_ms_(90.77%)_Space_44.9_MB_(95.29%)
function lengthOfLongestSubstring(s: string): number {
const lastIndices: number[] = new Array(256).fill(-1)
let maxLen: number = 0
let curLen: number = 0
let start: number = 0
for (let i = 0; i < s.length; i++) {
const cur: string = s.charAt(i)
const charCode: number = cur.charCodeAt(0)
if (lastIndices[charCode] < start) {
lastIndices[charCode] = i
curLen++
} else {
const lastIndex: number = lastIndices[charCode]
start = lastIndex + 1
curLen = i - start + 1
lastIndices[charCode] = i
}
if (curLen > maxLen) {
maxLen = curLen
}
}
return maxLen
}
export { lengthOfLongestSubstring }