Skip to content

Commit 10d3c49

Browse files
committed
add second solution
1 parent fdf1dae commit 10d3c49

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

โ€Žpalindromic-substrings/pmjuu.py

+30
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Dynamic programming
12
class Solution:
23
def countSubstrings(self, s: str) -> int:
34
n = len(s)
@@ -28,3 +29,32 @@ def countSubstrings(self, s: str) -> int:
2829
# ๊ณต๊ฐ„ ๋ณต์žก๋„:
2930
# - DP ํ…Œ์ด๋ธ”(dp)์€ O(n^2)์˜ ๊ณต๊ฐ„์„ ์‚ฌ์šฉ
3031
# - ์ถ”๊ฐ€ ๋ณ€์ˆ˜๋Š” O(1)์ด๋ฏ€๋กœ ์ „์ฒด ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)
32+
33+
34+
# ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ์‹
35+
class Solution:
36+
def countSubstrings(self, s: str) -> int:
37+
def expand_around_center(left: int, right: int) -> int:
38+
count = 0
39+
# ์ขŒ์šฐ๋กœ ํ™•์žฅํ•˜๋ฉฐ ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ํ™•์ธ
40+
while left >= 0 and right < len(s) and s[left] == s[right]:
41+
count += 1
42+
left -= 1
43+
right += 1
44+
return count
45+
46+
total_count = 0
47+
for i in range(len(s)):
48+
# ํ™€์ˆ˜ ๊ธธ์ด ํŒฐ๋ฆฐ๋“œ๋กฌ (์ค‘์‹ฌ์ด ๋ฌธ์ž ํ•˜๋‚˜)
49+
total_count += expand_around_center(i, i)
50+
# ์ง์ˆ˜ ๊ธธ์ด ํŒฐ๋ฆฐ๋“œ๋กฌ (์ค‘์‹ฌ์ด ๋ฌธ์ž ๋‘ ๊ฐœ)
51+
total_count += expand_around_center(i, i + 1)
52+
53+
return total_count
54+
55+
# ์‹œ๊ฐ„ ๋ณต์žก๋„:
56+
# - ๊ฐ ๋ฌธ์ž์—์„œ ์ค‘์‹ฌ์„ ๊ธฐ์ค€์œผ๋กœ ํ™•์žฅํ•˜๋ฏ€๋กœ ์ตœ๋Œ€ O(n) ํ™•์žฅ
57+
# - ๋ชจ๋“  ๋ฌธ์ž์— ๋Œ€ํ•ด ํ™•์žฅ์„ ์‹œ๋„ํ•˜๋ฏ€๋กœ O(n^2)
58+
59+
# ๊ณต๊ฐ„ ๋ณต์žก๋„:
60+
# - ์ถ”๊ฐ€ ๊ณต๊ฐ„ ์‚ฌ์šฉ ์—†์ด O(1)

0 commit comments

Comments
ย (0)