3783. Mirror Distance of an Integer
- Math
TIME
O(log n)
SPACE
O(1)
Intuition
Reverse the digits of n, then compute the absolute difference.
Solution
Reverse Function
Two approaches:
String-based:
reverse = int(str(n)[::-1])Mathematical:
def reverse(n):
result = 0
while n > 0:
result = result * 10 + n % 10
n //= 10
return resultBoth handle leading zeros correctly (e.g., 10 → 01 → 1).
Final Answer
return abs(n - reverse(n))Complexity
- Time: O(d) where d = number of digits ≈ log₁₀(n)
- Space: O(1) or O(d) for string approach
Edge Cases
- Palindrome numbers → distance = 0
- Numbers ending in 0 (10, 100, 120) → reverse has fewer digits
- Single digit → distance = 0
Code
class Solution:
def mirrorDistance(self, n: int) -> int:
"""
3783. Mirror Distance of an Integer
Time: O(log n)
Space: O(1)
"""
reverse_n = int(str(n)[::-1])
return abs(n - reverse_n)/**
* 3783. Mirror Distance of an Integer
* Time: O(log n)
* Space: O(1)
*/
class Solution {
public int mirrorDistance(int n) {
long reverseN = reverse(n);
return (int) Math.abs(n - reverseN);
}
private long reverse(int n) {
long result = 0;
while (n > 0) {
result = result * 10 + n % 10;
n /= 10;
}
return result;
}
}