33- 1 <= s.length <= 1000
44- s consist of only digits and English letters.
55
6+ <Solution 1: Brute force>
7+ - ๋ฌธ์์ด์ ์์๊ฐ๊ณผ ๋๊ฐ์ ์ด์ฉํ์ฌ ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๋ฐฉ์
8+
69Time Complexity: O(n^3)
710- ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ตฌํ ๋ O(n^2)
811- ๊ฐ ๋ถ๋ถ ๋ฌธ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ธ์ง๋ฅผ ์์๋ผ ๋ O(n)
912
1013Space Complexity: O(1)
11-
12- Note:
13- - ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ ์๊ฐํด๋ณด๊ธฐ/์ฐพ์๋ณด๊ธฐ
1414"""
15- # Solution 1: Brute force
16- # ๋ฌธ์์ด์ ์์๊ฐ๊ณผ ๋๊ฐ์ ์ด์ฉํ์ฌ ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ์
๋ฐ์ดํธํ๋ ๋ฐฉ์
1715class Solution :
1816 def longestPalindrome (self , s : str ) -> str :
1917 longest_palindrome = ""
@@ -29,3 +27,42 @@ def longestPalindrome(self, s: str) -> str:
2927 longest_palindrome = substr
3028
3129 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