Skip to content

Commit 97a33f4

Browse files
committed
Longest Substring Without Repeating Characters Solution
1 parent b41449c commit 97a33f4

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* ์ค‘๋ณต ๋ฌธ์ž ์—†์ด ๊ฐ€์žฅ ๊ธด ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ฐพ๊ธฐ (๋ถ€๋ถ„ ๋ฌธ์ž์—ด์€ ์—ฐ์†๋œ ๋ฌธ์ž๋“ค์˜ ์ง‘ํ•ฉ์ด์–ด์•ผ ํ•จ)
3+
*
4+
* ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(Sliding Window) ๊ธฐ๋ฒ•
5+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ•:
6+
* 1. ์‹œ์ž‘ํฌ์ธํ„ฐ(left)์™€ ๋ํฌ์ธํ„ฐ(right)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œˆ๋„์šฐ ์ •์˜
7+
* 2. ๋ฌธ์ž์˜ ๋“ฑ์žฅ์—ฌ๋ถ€๋Š” Map์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์ 
8+
* 3. ๋ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋ฉด์„œ ์œˆ๋„์šฐ ํ™•์žฅ
9+
* 4. ์ค‘๋ณต ๋ฌธ์ž๊ฐ€ ๋ฐœ๊ฒฌ๋˜๋ฉด ์‹œ์ž‘ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œ์ผœ ์œˆ๋„์šฐ ์ถ•์†Œ
10+
* 5. ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์—…๋ฐ์ดํŠธ
11+
*
12+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(n), ๊ณต๊ฐ„๋ณต์žก๋„: O(min(n, m)) (n: ๋ฌธ์ž์—ด ๊ธธ์ด, m: ๋ฌธ์ž ์ง‘ํ•ฉ ํฌ๊ธฐ)
13+
*/
14+
/**
15+
* @param {string} s
16+
* @return {number}
17+
*/
18+
var lengthOfLongestSubstring = function (s) {
19+
if (!s.length) return 0;
20+
21+
let maxLength = 0;
22+
let left = 0; // ์‹œ์ž‘ ํฌ์ธํ„ฐ(์œˆ๋„์šฐ ์™ผ์ชฝ ๊ฒฝ๊ณ„)
23+
const charMap = new Map();
24+
25+
for (let right = 0; right < s.length; right++) {
26+
const currentChar = s[right]; // ํ˜„์žฌ ๋ฌธ์ž
27+
28+
// ํ˜„์žฌ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ Map์— ์žˆ๊ณ , ๊ทธ ์ธ๋ฑ์Šค(์œ„์น˜)๊ฐ€ ํ˜„์žฌ ์œˆ๋„์šฐ ๋‚ด์— ์žˆ๋‹ค๋ฉด
29+
if (charMap.has(currentChar) && charMap.get(currentChar) >= left) {
30+
// ์‹œ์ž‘ํฌ์ธํ„ฐ(์œˆ๋„์šฐ ์™ผ์ชฝ ๊ฒฝ๊ณ„)๋ฅผ ์ค‘๋ณต๋œ ๋ฌธ์ž์˜ ๋‹ค์Œ์œ„์น˜๋กœ ์ด๋™
31+
left = charMap.get(currentChar) + 1;
32+
}
33+
34+
// ํ˜„์žฌ ๋ฌธ์ž์˜ ์ธ๋ฑ์Šค๋ฅผ Map์— ์ €์žฅ
35+
charMap.set(currentChar, right);
36+
37+
// ํ˜„์žฌ ์œˆ๋„์šฐ์˜ ๊ธธ์ด์™€ ๊ธฐ์กด ์ตœ๋Œ€ ๊ธธ์ด ์ค‘ ํฐ ๊ฐ’์„ ์„ ํƒ
38+
// right - left + 1: ํ˜„์žฌ ์œˆ๋„์šฐ์˜ ๊ธธ์ด
39+
maxLength = Math.max(maxLength, right - left + 1);
40+
}
41+
return maxLength; // ์ตœ๋Œ€ ๊ธธ์ด ๋ฆฌํ„ด
42+
};

0 commit comments

Comments
ย (0)