File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
longest-substring-without-repeating-characters Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 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+
You canโt perform that action at this time.
0 commit comments