Problem Statement
Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-231, 231 - 1], then return 0.
Approach
- Take the last digit of the number and append it to the answer until the number becomes 0.
- Before append, check if the answer can accommodate the new digit. If not, return 0.
Solution in Swift
class Solution {
func reverse(_ x: Int) -> Int {
var number = x
var answer = 0
let max = Int(Int32.max / 10)
let min = Int(Int32.min / 10)
while number != 0 {
if answer > max || answer < min {
return 0
}
answer = answer * 10 + (number % 10)
number = number / 10
}
return answer
}
}
Complexity
Time Complexity: \(O(\log n)\).
\(\log_{10} n\) = number of digits in \(n\).
Space Complexity: \(O(1)\)