簡單swift
給出一個 32 位的有符號整數,你須要將這個整數中每位上的數字進行反轉。bash
1:
輸入: 123
輸出: 321
複製代碼
2:
輸入: -123
輸出: -321
複製代碼
3:
輸入: 120
輸出: 21
複製代碼
注意: 假設咱們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−2^31, 2^(31 − 1)]。請根據這個假設,若是反轉後整數溢出那麼就返回 0。網絡
來源:力扣(LeetCode) 連接:leetcode-cn.com/problems/re… 著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。ui
swiftspa
這題仍是比較簡單的。如何取整數的各位呢?對10
求餘數,再除以10
,就能夠獲得。而後如何將數字反轉呢,固然也是每位乘10
,再相加。
須要注意的是要判斷是否溢出。題目註明爲32
位有符號整數,則應該用Int32.max = 2147483647
和Int32.min = -2147483647
。咱們在循環中,是須要累加的,須要判斷Int32.max
和Int32.min
除以十的結果是否知足條件,同時還要留意在resultNumber == Int32.max
或 resultNumber == Int32.min
的時候,因爲得出的結果還要乘10
,得出的結果爲絕對值|2147483640|
,因此endNumber
的絕對值不能大於7
。完畢。code
代碼以下:leetcode
class Solution {
func reverse(_ x: Int) -> Int {
var originalNumber = x
var resultNumber = 0
while originalNumber != 0 {
let endNumber = originalNumber % 10
originalNumber /= 10
if (resultNumber > Int32.max / 10) || (resultNumber == Int32.max / 10 && endNumber > 7) {
return 0
}
if (resultNumber < Int32.min / 10) || (resultNumber == Int32.min / 10 && endNumber < -8) {
return 0
}
resultNumber = resultNumber * 10 + endNumber
}
return resultNumber
}
}
複製代碼
很基礎的一道題,注意邊界條件,還要注意不一樣的類型長度是不一樣的。get