Reversing a string in Ruby: Exploring custom solutions

Ruby @ Freshers.in

Reversing a string is a common programming task that can be approached in various ways. While Ruby provides a built-in reverse method, it’s often beneficial to understand how to reverse a string without relying on such convenience. In this article, we’ll explore custom solutions for reversing a string in Ruby, gaining a deeper understanding of string manipulation and algorithm design.

Understanding the problem

Before diving into code, let’s clearly define the problem. We want to create a Ruby function that takes a string as input and returns the string in reverse order. For example, if we input “Hello, World!”, the function should return “!dlroW ,olleH”.

Approach 1: Iterative method

One way to reverse a string is by iterating through it from the end to the beginning and building a new string character by character. Here’s a step-by-step implementation:

def reverse_string(input)
  reversed = ""
  i = input.length - 1
  while i >= 0
    reversed += input[i]
    i -= 1
  end
  return reversed
end
# Test the function
original_string = "Hello, World!"
reversed_string = reverse_string(original_string)
puts reversed_string

In this method, we initialize an empty string reversed and a counter i starting from the last character index. We iterate through the input string, adding each character to reversed, effectively reversing the string.

Approach 2: Using recursion

Another way to reverse a string is by using recursion. We can break down the problem into smaller subproblems by removing the last character in each recursion step. Here’s an implementation:

def reverse_string(input)
  return input if input.length <= 1
  return reverse_string(input[1..-1]) + input[0]
end
# Test the function
original_string = "Hello, World!"
reversed_string = reverse_string(original_string)
puts reversed_string

In this recursive approach, we check the base case where the string length is 1 or less, and we return the input string as is. Otherwise, we recursively reverse the substring from the second character to the end and append the first character, effectively reversing the string.

Approach 3: In-Place reversal

If you want to reverse the string in-place, you can convert the string into an array of characters, reverse the order of elements, and then join them back into a string. Here’s how you can do it:

def reverse_string_in_place(input)
  input = input.chars  # Convert string to an array of characters
  left = 0
  right = input.length - 1
  while left < right
    input[left], input[right] = input[right], input[left]
    left += 1
    right -= 1
  end
  return input.join  # Convert the array back to a string
end
# Test the function
original_string = "Hello, World!"
reversed_string = reverse_string_in_place(original_string)
puts reversed_string

In this approach, we use two pointers, left and right, to swap characters from the beginning and end of the array, effectively reversing it in place.

Get more useful articles on Ruby

Author: user