swift演算法 整數反轉

2021-09-22 17:51:18 字數 1270 閱讀 2152

描述:給出乙個32位的有符號整數,你需要將這個整數中美位上的數字進行反轉

例1:輸入:123       輸出:321

例2:輸入:-123     輸出:-321

例3:輸入:120       輸出:21

注意:假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231,  231 − 1] 即 [-2147483648,2147483647]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。

解法一思路:將整數去掉符號,轉換為字串,通過遍歷字串進行反轉,需要判斷反轉後的字串整數是否溢位,最後在加上符號,

時間複雜度:o(n)

具體實現:

var a = x

if a == 0

//定義乙個bool表示正負數

var bool : bool = true

if x < 0 else

//將字串中的-移除

var c = string(x)

if c.contains("-")

var result : string! = ""

//遍歷字串,將當前的字元拼接在後面

for i in c

//如果字串的第乙個字元為0,則需要移除

if result.first == "0"

//判斷反轉後的字串整數是否溢位

if nsstring.init(string: result).integervalue > 2147483647

//如果傳入的是負數,則需要加上-標識

if bool

return nsstring.init(string: result).integervalue

解法二

思路:使用數學方法,在沒有陣列的情況下,對數字進行 彈出 和 推入操作,最後判斷下反轉的數字是否溢位

pop:彈出操作

pop = x%10

x /= 10

push:推入操作

temp = rev * 10 + pop

rev = temp      

時間複雜度:o(log(x))

具體實現:

func reverseint(x : int)->int

if (rev < int.min/10)||(rev == int.min/10 && pop < -8)

rev = rev*10+pop

}return rev

}

Swift 反轉整數 LeetCode

給定乙個 32 位有符號整數,將整數中的數字進行反轉。注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。示例 輸入 123 輸出 321解決方法 class solution func reverse x int in...

反轉整數演算法

演算法要求 給定乙個 32 位有符號整數,將整數中的數字進行反轉。給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 2 ...

演算法 整數反轉

題目 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如...