讓我們一起學(xué)會反轉(zhuǎn)整數(shù)
作者: Swift君
給定一個有符號的 32 位整數(shù) x,返回其數(shù)字反轉(zhuǎn)的 x。 如果反轉(zhuǎn) x 導(dǎo)致值超出有符號的 32 位整數(shù)范圍 -$2^31$ <= x <= $2^31$ - 1,則返回 0。
本文轉(zhuǎn)載自微信公眾號「Swift社區(qū)」,作者Swift君。轉(zhuǎn)載本文請聯(lián)系Swift社區(qū)公眾號。
難度水平:中等
1. 描述
給定一個有符號的 32 位整數(shù) x,返回其數(shù)字反轉(zhuǎn)的 x。 如果反轉(zhuǎn) x 導(dǎo)致值超出有符號的 32 位整數(shù)范圍 -$2^31$ <= x <= $2^31$ - 1,則返回 0。
假設(shè)環(huán)境不允許存儲 64 位整數(shù)(有符號或無符號)。
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 反向迭代數(shù)字的數(shù)字,并使用 * 10 相應(yīng)地更新結(jié)果。
- 注意:適時處理整數(shù)溢出。
- 時間復(fù)雜度: O(n)
- 空間復(fù)雜度: O(1)
責(zé)任編輯:武曉燕
來源:
Swift社區(qū)