[Leetcode] 7.Reverse integer
in Leetcode on Leetcode, 7, Reverse, Integer
Problem
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.
Assume the environment does not allow you to store 64-bit integers (signed or unsigned).
Solution
1. arithmetic
pop/push 연산을 통하여 마지막 one digit부터 reverse 숫자를 구함. overflow check! 필수
2. string
string으로 표현하여 reverse string을 구함
- sign 체크
- reverse string 구함
- overflow 검사
CODE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import functools from typing import List class Solution: def reverse(self, x: int) -> int: ''' Runtime : 36ms Memory Usage : 14.3MB sol : %연산으로 일의자리수 부터 구하여 reverse 숫자를 구함 :param x: :return: ''' # set variable sign = 1 ans = 0 # check whether positive and negative if x < 0: sign = -1 x = -x # algorithm for reverse integer while x > 0: ans = ans * 10 + x % 10 x = int(x / 10) # overflow check if ans > 2 ** 31 - 1: return 0 else: return sign * ans def reverse2(self, x: int) -> int: ''' string으로 reverse str구하고 sign를 구함 :param x: x :return: ''' sign = 1 if x < 0: sign = -1 x = -x # reverse str ans = str(x)[::-1] ans = int(ans) # overflow check if ans < -(2 ** 31) or ans > 2 ** 31 - 1: return 0 else: return -ans if sign == -1 else ans | cs |