Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def find_longest_palindrome(input)
- big_string = input.sub(' ', '')
- palindromes = []
- longest = {:length => 0, :index => nil}
- input.length.times do |i|
- p = extract_palindrome(big_string, i)
- palindromes << p unless(p.length == 1)
- longest = {:index => (palindromes.count - 1), :length => p.length} if(p.length > longest[:length])
- end
- palindromes[longest[:index]]
- end
- def extract_palindrome(big_string, start, i = 1, palindrome = "", increment = 0)
- if(i == 1)
- if(big_string.length % 2 == 0)
- if(big_string[start] == big_string[start + i])
- palindrome += (big_string[start] * 2)
- increment = 1
- end
- else
- palindrome += big_string[start] if(i == 1)
- end
- end
- if(big_string[(start - i)] == big_string[(start + (i + increment))])
- palindrome = big_string[start - i] + palindrome
- palindrome += big_string[start + (i + increment)]
- extract_palindrome(big_string, (start + 1), (i + 1), palindrome, increment)
- else
- return palindrome
- end
- end
- puts find_palindromes("dod")
Add Comment
Please, Sign In to add comment