Description
Given an integer 123 flip it 321. Take into account 32-bit integer range (-2^31, 2^31 - 1)
When getting the end of a number :: num%10
When getting the start of a number :: num // 10
When adding a 1s place to a number :: num = num*10+new_num
For determining if adding a diget will cause rollover:: (current, digit)=>current > MAX_INT // 10 or (current == MAX_INT // 10 and next_num > MAX_INT%10) and for MIN_INT, flip the > to <
Runtime
O(n)
Pseudocode
while number:
digit = number % 10
number = number // 10
if next digit will overflow:
return 0
result = result * 10 + digit