1. 程式人生 > >leetcode練習之No.7------ 翻轉整數reverse_integer

leetcode練習之No.7------ 翻轉整數reverse_integer

原文地址:http://www.niu12.com/article/48

git地址:[email protected]:ZQCard/leetcode.git

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21
package reverse_integer

import (
"math"
)

func ReverseInteger(x int) int {
// 先確定正負數
var flag = true
if x < 0{
flag = false
x = -x
}

// 將數字作為單個元素儲存入組 倒序
var baseNum []int

var modNum = 10

for{
mod := x % modNum
baseNum = append(baseNum, mod)
x = (x - mod) / modNum
if x < 1{
break
}
}

var res = 0
// 將元素中的數一次抽取出來相加
length := len(baseNum)
for i := 0; i < length; i++ {
if baseNum[i] == 0 {
continue
}
res += baseNum[i] * int(math.Pow(float64(modNum), float64(length - i - 1)))
}

if !flag {
res = 0 - res
if res < math.MinInt32 {
return 0
}
}else if res > math.MaxInt32{
return 0
}
return int(res)
}

func ReverseIntegerTwo(x int) int {
sign := 1

// 處理負數
if x < 0 {
sign = -1
x = -1 * x
}

res := 0
for x > 0 {
// 取出x的末尾
temp := x % 10
// 放入 res 的開頭
res = res*10 + temp
// x 去除末尾
x = x / 10
}

// 還原 x 的符號到 res
res = sign * res

// 處理 res 的溢位問題
if res > math.MaxInt32 || res < math.MinInt32 {
res = 0
}

return res
}