Skip to content

Commit e4864f2

Browse files
committed
add detailed comments for the longest substring algorithm
1 parent c89af33 commit e4864f2

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

โ€Žlongest-substring-without-repeating-characters/KwonNayeon.pyโ€Ž

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,34 @@
1515
3. ์ค‘๋ณต ๋ฌธ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์œˆ๋„์šฐ์˜ ์‹œ์ž‘์ (current_start)์„ ์ค‘๋ณต ๋ฌธ์ž ๋‹ค์Œ ์œ„์น˜๋กœ ์ด๋™
1616
4. ๋งค ๋‹จ๊ณ„์—์„œ ํ˜„์žฌ ์œˆ๋„์šฐ์˜ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ตœ๋Œ€ ๊ธธ์ด ๊ฐฑ์‹ 
1717
5. ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ๊ธด ์ค‘๋ณต ์—†๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๋ฐ˜ํ™˜
18+
19+
๋…ธํŠธ:
20+
- ์ฒ˜์Œ์— ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„: ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ, ์ง€๊ธˆ๊นŒ์ง€ ์บ๋ฆญํ„ฐ๊ฐ€ ๋“ฑ์žฅํ•œ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•จ
21+
- ์‹ค์ œ๋กœ๋Š” ๊ฐ ๋ฌธ์ž์˜ ๋งˆ์ง€๋ง‰ ๋“ฑ์žฅ ์œ„์น˜(์ธ๋ฑ์Šค)๋ฅผ ์ €์žฅํ•˜๋Š” ์šฉ๋„์ž„
1822
"""
1923

24+
# e.g., s = "abca"
2025
class Solution:
2126
def lengthOfLongestSubstring(self, s: str) -> int:
22-
seen = {}
27+
seen = {} # ๊ฐ ๋ฌธ์ž๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋“ฑ์žฅํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ
2328
current_start = 0
2429
max_length = 0
2530

2631
for i in range(len(s)):
2732
char = s[i]
2833

34+
# ํ˜„์žฌ ๋ฌธ์ž๊ฐ€ ์ด๋ฏธ ๋“ฑ์žฅํ–ˆ๊ณ , ๊ทธ ์œ„์น˜๊ฐ€ ํ˜„์žฌ ๊ณ ๋ ค ์ค‘์ธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ
2935
if char in seen and seen[char] >= current_start:
36+
37+
# ์ค‘๋ณต ๋ฐœ์ƒ, ์œˆ๋„์šฐ ์‹œ์ž‘์ ์„ ์ด์ „ ๋“ฑ์žฅ ์œ„์น˜ ๋‹ค์Œ์œผ๋กœ ์ด๋™
3038
current_start = seen[char] + 1
3139

3240
seen[char] = i
3341

42+
# ํ˜„์žฌ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๊ณ„์‚ฐ (ํ˜„์žฌ ์ธ๋ฑ์Šค - ์‹œ์ž‘ ์ธ๋ฑ์Šค + 1)
3443
current_length = i - current_start + 1
44+
45+
# ์ตœ๋Œ€ ๊ธธ์ด ์—…๋ฐ์ดํŠธ
3546
max_length = max(current_length, max_length)
3647

3748
return max_length

0 commit comments

Comments
ย (0)