Skip to content

Commit 8d93ac6

Browse files
committed
add solution : 3. Longest Substring Without Repeating Characters
1 parent e6e48af commit 8d93ac6

File tree

1 file changed

+36
-0
lines changed
  • longest-substring-without-repeating-characters

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
*@link https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
3+
*
4+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
5+
* - ์Šฌ๋ผ์šฐ๋”ฉ ์œˆ๋„์šฐ์™€ set ์‚ฌ์šฉํ•ด์„œ ์ค‘๋ณต์—†๋Š” ๋ฌธ์ž์—ด ํ™•์ธ
6+
* - ์ค‘๋ณต ๋ฌธ์ž ๋ฐœ๊ฒฌํ•˜๋ฉด ์œˆ๋„์šฐ ์ถ•์†Œ
7+
*
8+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
9+
* - ๊ฐ ๋ฌธ์ž ์ˆœํšŒํ•˜๋‹ˆ๊นŒ
10+
*
11+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(n)
12+
* - ์ค‘๋ณต ์—†๋Š” ๊ฒฝ์šฐ ์ตœ๋Œ€ n๊ฐœ์˜ ๋ฌธ์ž set์— ์ €์žฅ
13+
*/
14+
function lengthOfLongestSubstring(s: string): number {
15+
let start = 0,
16+
end = 0,
17+
maxLength = 0;
18+
const set = new Set<string>();
19+
20+
while (end < s.length) {
21+
const char = s[end];
22+
23+
// ์ค‘๋ณต์ด ์žˆ์œผ๋ฉด ์œˆ๋„์šฐ ์ถ•์†Œ
24+
if (set.has(char)) {
25+
set.delete(s[start]);
26+
start++;
27+
} else {
28+
// ์ค‘๋ณต ์—†์œผ๋ฉด set์— ๋ฌธ์ž ์ถ”๊ฐ€, ์œˆ๋„์šฐ ํ™•์žฅ
29+
set.add(char);
30+
maxLength = Math.max(maxLength, end - start + 1);
31+
end++;
32+
}
33+
}
34+
35+
return maxLength;
36+
}

0 commit comments

Comments
ย (0)