Skip to content

Commit af1504f

Browse files
committed
add: solve #243 Longest Substring Without Repeating Characters with ts
1 parent e69fc8d commit af1504f

File tree

1 file changed

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

1 file changed

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

0 commit comments

Comments
ย (0)