7. Reverse Integer
https://leetcode.com/problems/reverse-integer/description/
Core Idea
Step 1: Handle Sign
Store sign separately.
Work with
abs(x).
Step 2: Reverse Digits
Use:
rem = num % 10
rev = rev * 10 + rem
num = num // 10
Step 3: Restore Sign
Instead of:
rev = rev - 2*rev
Better:
rev = -rev
Step 4: Check 32-bit Range
if rev < -2**31 or rev > 2**31 - 1:
return 0
Code
class Solution(object):
def reverse(self, x):
num = abs(x)
rev = 0
while num > 0:
rem = num % 10
rev = rev * 10 + rem
num = num // 10
if x < 0:
rev = -rev
if rev < -2**31 or rev > 2**31 - 1:
return 0
return rev