Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def largest_palindrone(string):
- if not string:
- return ''
- else:
- longest = ['']
- lp_helper(string, longest)
- return longest
- def memo(func):
- cache = {}
- cache2 = {}
- def memoize(string, longest):
- if len(longest) == 0:
- key = string
- else:
- key = string + longest[0]
- if not key in cache:
- cache[key] = func(string, longest)
- cache2[key] = longest[0]
- longest[0] = cache2[key]
- return cache[key]
- return memoize
- @memo
- def lp_helper(string, longest):
- if not string:
- return True
- if len(string) == 1:
- if not len(longest[0]):
- longest[0] = string
- return True
- if string[0] == string[-1]:
- if lp_helper(string[1:len(string)-1], longest):
- if len(longest[0]) < len(string):
- longest[0] = string
- return True
- else:
- return False
- else:
- substr_has_pal = lp_helper(string[1:], longest) or lp_helper(string[0:len(string)-1], longest)
- return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement