使用 Go 解決 LeetCode 問題:7. Reverse Integer

Description

Given a 32-bit signed integer, reverse digits of an integer.

  • Example 1:
1
2
3
Input: 123
Output: 321
Example 2:
  • Example 2:
1
2
3
Input: -123
Output: -321
Example 3:
  • Example 3:
1
2
Input: 120
Output: 21

Solution

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
func reverse(x int) int {
// 宣告一個正負數的標記
sign := 1

// 如果 x 是負數,將標記設置為 -1,並將 x 修改為正數
if x < 0 {
sign = -1
x *= -1
}

result := 0
for x > 0 {
// 取得 x 的尾數
temp := x % 10
// 將 x 的尾數加至 result
result = result*10 + temp
// 去除 x 的尾數
x = x / 10
}

// 用正負數的標記修正 result
result *= sign

// 避免 result 溢出
if result > math.MaxInt32 || result < math.MinInt32 {
result = 0
}

return result
}

Note

假設有以下參數:

1
x: 321

說明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
x 為 321:
result 為 0:

取得 x 的尾數為 1,把 result 乘以 10 加上 1,把 x 除以 10。

x 為 32:
result 為 1:

取得 x 的尾數為 2,把 result 乘以 10 加上 2,把 x 除以 10。

x 為 3:
result 為 21:

取得 x 的尾數為 3,把 result 乘以 10 加上 3,把 x 除以 10。

x 為 0:
result 為 321:

Code