Kotlin Program to Reverse a Number with Output
% 10 and build the reversed number by multiplying the result by 10 and adding the digit; for example: while (num != 0) { reversed = reversed * 10 + num % 10; num /= 10 }.Examples
How to Think About It
%. Then, add that digit to a new number that grows by shifting digits left (multiplying by 10). Repeat until the original number is fully processed.Algorithm
Code
fun main() {
var num = 1234
var reversed = 0
while (num != 0) {
val digit = num % 10
reversed = reversed * 10 + digit
num /= 10
}
println(reversed)
}Dry Run
Let's trace the number 1234 through the code to see how it reverses.
Initial values
num = 1234, reversed = 0
First iteration
digit = 1234 % 10 = 4; reversed = 0 * 10 + 4 = 4; num = 1234 / 10 = 123
Second iteration
digit = 123 % 10 = 3; reversed = 4 * 10 + 3 = 43; num = 123 / 10 = 12
Third iteration
digit = 12 % 10 = 2; reversed = 43 * 10 + 2 = 432; num = 12 / 10 = 1
Fourth iteration
digit = 1 % 10 = 1; reversed = 432 * 10 + 1 = 4321; num = 1 / 10 = 0
Loop ends
num = 0, reversed = 4321
| num | digit | reversed |
|---|---|---|
| 1234 | 4 | 4 |
| 123 | 3 | 43 |
| 12 | 2 | 432 |
| 1 | 1 | 4321 |
Why This Works
Step 1: Extract last digit
Using num % 10 gets the last digit of the number, like peeling one digit off.
Step 2: Build reversed number
Multiply the current reversed number by 10 to shift digits left, then add the new digit.
Step 3: Remove last digit
Divide the original number by 10 using integer division to drop the last digit and continue.
Alternative Approaches
fun main() {
val num = 1234
val reversed = num.toString().reversed().toInt()
println(reversed)
}fun reverseNumber(num: Int, reversed: Int = 0): Int { return if (num == 0) reversed else reverseNumber(num / 10, reversed * 10 + num % 10) } fun main() { println(reverseNumber(1234)) }
Complexity: O(d) time, O(1) space
Time Complexity
The loop runs once per digit in the number, so time grows linearly with the number of digits.
Space Complexity
Only a few variables are used, so space is constant regardless of input size.
Which Approach is Fastest?
The loop method is fastest and uses least memory; string conversion is simpler but slower and uses more memory; recursion is elegant but less efficient.
| Approach | Time | Space | Best For |
|---|---|---|---|
| Loop method | O(d) | O(1) | Efficient and memory-friendly |
| String conversion | O(d) | O(d) | Quick coding, small inputs |
| Recursive method | O(d) | O(d) | Elegant code, small inputs |
/ to remove digits, not floating-point division.