Guest User

Untitled

a guest
Jan 21st, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. def find_longest_palindrome(input)
  2. big_string = input.sub(' ', '')
  3.  
  4. palindromes = []
  5. longest = {:length => 0, :index => nil}
  6.  
  7. input.length.times do |i|
  8. p = extract_palindrome(big_string, i)
  9. palindromes << p unless(p.length == 1)
  10.  
  11. longest = {:index => (palindromes.count - 1), :length => p.length} if(p.length > longest[:length])
  12. end
  13.  
  14. palindromes[longest[:index]]
  15. end
  16.  
  17. def extract_palindrome(big_string, start, i = 1, palindrome = "", increment = 0)
  18. if(i == 1)
  19. if(big_string.length % 2 == 0)
  20. if(big_string[start] == big_string[start + i])
  21. palindrome += (big_string[start] * 2)
  22. increment = 1
  23. end
  24. else
  25. palindrome += big_string[start] if(i == 1)
  26. end
  27. end
  28.  
  29. if(big_string[(start - i)] == big_string[(start + (i + increment))])
  30. palindrome = big_string[start - i] + palindrome
  31. palindrome += big_string[start + (i + increment)]
  32.  
  33. extract_palindrome(big_string, (start + 1), (i + 1), palindrome, increment)
  34. else
  35. return palindrome
  36. end
  37. end
  38.  
  39. puts find_palindromes("dod")
Add Comment
Please, Sign In to add comment