(LeetCode) Reverse Integer

Reverse Integer

  • 분류 : String
  • 난이도 : Easy

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 [-2^31, 2^31 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

Example 1

1
2
Input: x = 123
Output: 321

Example 2

1
2
Input: x = -123
Output: -321

Example 3

1
2
Input: x = 120
Output: 21

Example 4

1
2
Input: x = 0
Output: 0

Constraints

  • -2^31 <= x <= 2^31 - 1

Solution

Exapnder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
fun reverse(x: Int): Int {
var value = x
var isMinus: Int = 1
if (x < 0) {
isMinus = -1
value *= isMinus
}
var str = value.toString()
str = str.reversed()

try {
str.toInt()
} catch (e: NumberFormatException) {
return 0
}

return (str.toInt()) * isMinus
}
}

Point of Thinking

  • 입력으로 주어지는 숫자가 음수라면 결과값에 음수만 곱해서 반환하면 된다.
  • Int를 String으로 바꾼 후 reverse 처리하면 바로 뒤집을 수 있다.
  • 뒤집었을 때 맨 앞에 오게되는 0의 경우 "021" -> 21로 변환하는 toInt() 메서드에서 자동으로 처리된다.
  • 표현 범위를 넘어서는 값은 toInt()에서 Exception을 발생시키므로 이때 0을 반환한다.