Reverse integer digits
Categories:
How to Reverse Integer Digits in Ruby

Learn various techniques to reverse the digits of an integer in Ruby, from simple string manipulation to mathematical approaches, with detailed explanations and code examples.
Reversing the digits of an integer is a common programming challenge that tests understanding of data types, string manipulation, and mathematical operations. In Ruby, there are several elegant ways to achieve this, each with its own advantages and use cases. This article will explore the most popular methods, providing clear explanations and practical code examples.
Method 1: String Conversion (The Ruby Way)
The most straightforward and often most 'Ruby-like' approach involves converting the integer to a string, reversing the string, and then converting it back to an integer. This method is highly readable and concise, leveraging Ruby's powerful string manipulation capabilities.
flowchart TD A[Start] --> B["Convert Integer to String (e.g., 123 -> '123')"] B --> C["Reverse String ('123' -> '321')"] C --> D["Convert String to Integer ('321' -> 321)"] D --> E[End]
Flowchart for the String Conversion Method
def reverse_integer_string(num)
is_negative = num < 0
num_str = num.abs.to_s
reversed_str = num_str.reverse
reversed_num = reversed_str.to_i
is_negative ? -reversed_num : reversed_num
end
puts reverse_integer_string(123) # Output: 321
puts reverse_integer_string(-456) # Output: -654
puts reverse_integer_string(700) # Output: 7
Ruby code for reversing an integer using string conversion.
abs
method and conditional negation ensure the sign is preserved, and to_i
naturally handles leading zeros (e.g., '007'.to_i becomes 7).Method 2: Mathematical Approach
For those who prefer a more mathematical or algorithmically fundamental solution, reversing digits can be done using modulo and division operations. This method avoids string conversions entirely, which can sometimes be more performant for very large numbers or in environments where string operations are costly.
flowchart TD A[Start] --> B{Initialize reversed_num = 0} B --> C{num != 0?} C -- Yes --> D["digit = num % 10"] D --> E["reversed_num = reversed_num * 10 + digit"] E --> F["num = num / 10 (integer division)"] F --> C C -- No --> G[Return reversed_num] G --> H[End]
Flowchart for the Mathematical Digit Reversal Method
def reverse_integer_math(num)
is_negative = num < 0
num = num.abs
reversed_num = 0
while num > 0
digit = num % 10
reversed_num = reversed_num * 10 + digit
num /= 10 # Integer division
end
is_negative ? -reversed_num : reversed_num
end
puts reverse_integer_math(123) # Output: 321
puts reverse_integer_math(-456) # Output: -654
puts reverse_integer_math(700) # Output: 7
Ruby code for reversing an integer using mathematical operations.
% 10
) and builds the reversed number by multiplying the current reversed_num
by 10 and adding the extracted digit. Integer division (/ 10
) then removes the last digit from the original number.Choosing the Right Method
Both methods effectively reverse integer digits. The string conversion method is generally more idiomatic Ruby and often preferred for its simplicity and readability, especially for typical integer sizes. The mathematical approach can be marginally more efficient for extremely large numbers where string conversions might incur overhead, or in scenarios where string operations are explicitly disallowed. For most practical applications in Ruby, the string conversion method is perfectly adequate and often more maintainable.
1. Step 1: Understand the Input
Determine if the integer can be negative or zero, and how these cases should be handled in the reversed output.
2. Step 2: Select a Strategy
Choose between string conversion (for simplicity and readability) or the mathematical approach (for raw algorithmic understanding or specific performance needs).
3. Step 3: Implement and Test
Write the code using your chosen method and thoroughly test it with positive, negative, zero, and numbers ending in zero to ensure correctness.