-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpalidrome.py
30 lines (22 loc) · 833 Bytes
/
palidrome.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def longest_palindrome(s):
if not s or len(s) < 1:
return ""
start = 0
end = 0
for i in range(len(s)):
len1 = expand_around_center(s, i, i) # For odd-length palindromes
len2 = expand_around_center(s, i, i + 1) # For even-length palindromes
max_length = max(len1, len2)
if max_length > end - start:
start = i - (max_length - 1) // 2
end = i + max_length // 2
return s[start:end + 1]
def expand_around_center(s, left, right):
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1
# Example usage:
input_string = "babad"
longest_pal_substring = longest_palindrome(input_string)
print("Longest palindromic substring:", longest_pal_substring) # Output: "bab" or "aba"