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).
Example 1:
Input: x = 123 Output: 321
Example 2:
Input: x = -123 Output: -321
Example 3:
Input: x = 120 Output: 21
Example 4:
Input: x = 0 Output: 0
Constraints:
- -231 <= x <= 231 - 1
가장 중요한 부분은 실제 일의 자리 값을 빼와서 더해주기 전에 값을 비교하는 부분이다.
이건 누구꺼 참고했는데, 그 솔루션을 다시 찾으려니 못찾겠다.
class Solution:
def reverse(self, x: int) -> int:
INT_MAX = 2**31-1 #2147483647
INT_MIN = -2**31 #2147483648
INT_MIN_REV = -8463847412
print("INT_MAX: ", INT_MAX)
print("INT_MIN: ", INT_MIN)
if x == INT_MIN_REV:
return INT_MIN
remainder = abs(x)
result = 0
while remainder:
remainder, digit = divmod(remainder, 10)
if result > INT_MAX // 10 or result == INT_MAX // 10 and digit >7:
return 0
if result < INT_MIN//10 or result == INT_MIN //10 and digit <-8:
return 0
result = digit + result*10
if x<0:
result = -result
return result
반응형
'공부하며놀자 > 프로그래밍' 카테고리의 다른 글
[leetcode] 13. Roman to Integer (0) | 2021.01.16 |
---|---|
[leetcode] 9. Palindrome Number (0) | 2021.01.15 |
Visual Studio Post-build 적용하기 (0) | 2019.07.24 |
[LeetCode] 2.Add Two Numbers (Medium) (0) | 2019.04.11 |
[python]파이썬 기초 연습 console tic tac toe 게임. (3목 5목 오목 삼목) (0) | 2019.03.01 |
댓글