LeetCode 刷題筆記 - 7. 整數反轉

難度:

簡單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 = 2147483647Int32.min = -2147483647。咱們在循環中,是須要累加的,須要判斷Int32.maxInt32.min除以十的結果是否知足條件,同時還要留意在resultNumber == Int32.maxresultNumber == 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

相關文章
相關標籤/搜索