I have encountered to this question and applied a brute force algorithm off top of my head and couldn't find a better optimized solution.
I was hoping I could get some insight to implement a better optimized code in terms of complexity. My solution has O(N2) as well as O(n2) space.
class Solution:
def longestPalindrome(self, s: 'str') -> 'str':
if s=="":
return ""
else:
## Find all the substrings
arr=[]
for i in range(len(s)):
char = s[i]
arr.append(char)
for j in range(i+1, len(s)-1):
char+=s[j]
arr.append(char)
##Find the palindrome with a longest length
max_length = 0
for j in range(len(arr)):
if self.isPalindrome(arr[j]):
if len(arr[j]) > max_length:
max_length = len(arr[j])
index = arr[j]
return index
def isPalindrome(self,s:'str')->'str':
if s == s[::-1]:
return True