讓我們一起學會反轉整數
作者: Swift君
給定一個有符號的 32 位整數 x,返回其數字反轉的 x。 如果反轉 x 導致值超出有符號的 32 位整數范圍 -$2^31$ <= x <= $2^31$ - 1,則返回 0。
本文轉載自微信公眾號「Swift社區」,作者Swift君。轉載本文請聯系Swift社區公眾號。
難度水平:中等
1. 描述
給定一個有符號的 32 位整數 x,返回其數字反轉的 x。 如果反轉 x 導致值超出有符號的 32 位整數范圍 -$2^31$ <= x <= $2^31$ - 1,則返回 0。
假設環境不允許存儲 64 位整數(有符號或無符號)。
2. 示例
示例 1
- 輸入: x = 123
- 輸出: 321
示例 2
- 輸入: x = -123
- 輸出: -321
示例 3
- 輸入: x = 120
- 輸出: 21
示例 4
- 輸入: x = 0
- 輸出: 0
約束條件:
- -$2^31$ <= x <= $2^31$ - 1
3. 答案
- class ReverseInteger {
- func reverse(_ x: Int) -> Int {
- var res = 0
- var x = x
- while x != 0 {
- if res > Int(Int32.max) / 10 || res < Int(Int32.min) / 10 {
- return 0
- }
- res = res * 10 + x % 10
- x = x / 10
- }
- return res
- }
- }
- 主要思想:使用 % 10 反向迭代數字的數字,并使用 * 10 相應地更新結果。
- 注意:適時處理整數溢出。
- 時間復雜度: O(n)
- 空間復雜度: O(1)
責任編輯:武曉燕
來源:
Swift社區