From bc46927e15a01504308d6c38853995c1b2d68d4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C8=98tefan-Iulian=20Alecu?= <165364995+pascalecu@users.noreply.github.com> Date: Fri, 24 Apr 2026 03:17:31 +0300 Subject: [PATCH] Add Longest Palindromic Substring in Ruby --- .../r/ruby/longest-palindromic-substring.rb | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 archive/r/ruby/longest-palindromic-substring.rb diff --git a/archive/r/ruby/longest-palindromic-substring.rb b/archive/r/ruby/longest-palindromic-substring.rb new file mode 100644 index 000000000..f7ed987f9 --- /dev/null +++ b/archive/r/ruby/longest-palindromic-substring.rb @@ -0,0 +1,28 @@ +def expand_from_center(s, left, right) + while left >= 0 && right < s.length && s[left] == s[right] + left -= 1 + right += 1 + end + s[(left + 1)...right] +end + +def longest_palindromic_substring(s) + abort "Usage: please provide a string that contains at least one palindrome" if s.to_s.empty? + + longest = "" + + s.length.times do |i| + odd = expand_from_center(s, i, i) + even = expand_from_center(s, i, i + 1) + + longest = odd if odd.length > longest.length + longest = even if even.length > longest.length + end + + abort "Usage: please provide a string that contains at least one palindrome" if longest.length <= 1 + + puts longest +end + +input = ARGV.first +longest_palindromic_substring(input) \ No newline at end of file