3
3
- 1 <= s.length <= 1000
4
4
- s consist of only digits and English letters.
5
5
6
+ <Solution 1: Brute force>
7
+ - ๋ฌธ์์ด์ ์์๊ฐ๊ณผ ๋๊ฐ์ ์ด์ฉํ์ฌ ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๋ฐฉ์
8
+
6
9
Time Complexity: O(n^3)
7
10
- ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ตฌํ ๋ O(n^2)
8
11
- ๊ฐ ๋ถ๋ถ ๋ฌธ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ธ์ง๋ฅผ ์์๋ผ ๋ O(n)
9
12
10
13
Space Complexity: O(1)
11
-
12
- Note:
13
- - ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ ์๊ฐํด๋ณด๊ธฐ/์ฐพ์๋ณด๊ธฐ
14
14
"""
15
- # Solution 1: Brute force
16
- # ๋ฌธ์์ด์ ์์๊ฐ๊ณผ ๋๊ฐ์ ์ด์ฉํ์ฌ ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๋ฐฉ์
17
15
class Solution :
18
16
def longestPalindrome (self , s : str ) -> str :
19
17
longest_palindrome = ""
@@ -29,3 +27,42 @@ def longestPalindrome(self, s: str) -> str:
29
27
longest_palindrome = substr
30
28
31
29
return longest_palindrome
30
+
31
+ """
32
+ <Solution 2: ํฌ ํฌ์ธํฐ ๋ฐฉ๋ฒ>
33
+ - ํฌ ํฌ์ธํฐ๋ฅผ ํ์ฉํ์ฌ ์ค์ฌ์์๋ถํฐ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ ์ฒดํฌ
34
+
35
+ Time Complexity: O(n^2)
36
+ - ๋ฉ์ธ ๋ฃจํ: O(n) - ๊ฐ ์์น i์ ๋ํด ๋ฐ๋ณต
37
+ - ๊ฐ ๋ฃจํ์์ expandAroundCenter ํธ์ถ: ์ต์
์ ๊ฒฝ์ฐ O(n) - ์ ์ฒด ๋ฌธ์์ด๊น์ง ํ์ฅ ๊ฐ๋ฅ
38
+
39
+ Space Complexity: O(1)
40
+ - ์ถ๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์์
41
+ """
42
+ class Solution :
43
+ def longestPalindrome (self , s : str ) -> str :
44
+ if not s :
45
+ return ""
46
+
47
+ start = 0
48
+ max_len = 1
49
+
50
+ for i in range (len (s )):
51
+
52
+ len1 = self .expandAroundCenter (s , i , i )
53
+ len2 = self .expandAroundCenter (s , i , i + 1 )
54
+
55
+ current_max = max (len1 , len2 )
56
+
57
+ if current_max > max_len :
58
+ max_len = current_max
59
+ start = i - (current_max - 1 ) // 2
60
+
61
+ return s [start :start + max_len ]
62
+
63
+ def expandAroundCenter (self , s , left , right ):
64
+ while left >= 0 and right < len (s ) and s [left ] == s [right ]:
65
+ left -= 1
66
+ right += 1
67
+
68
+ return right - left - 1
0 commit comments