leetcode 7,8,9題記錄
阿新 • • 發佈:2021-01-15
技術標籤:演算法
第七題:整數反轉
這是一道簡單難度的題,思路很簡單,迴圈開始時容器n *= 10將歷史數移到高位並讓出最低位取值,迴圈完畢就得到了最後的答案。
func reverse(x int) int {
if x < 10 && x > -10 {return x}
n := 0
for{
if x == 0 {break}
n = n * 10
n = n + x % 10
x = x / 10
}
if n > 2147483647 || n < -2147483648{return 0}
return n
}
第八題: 字串轉換整數 (atoi)
這一題感覺沒啥花哨的解法,時間複雜度O(n),最多也應該只到這個程度了
func myAtoi(s string) int {
n := 0
m := 1
// 去空格
for i,j := range s {
if j == 32{
continue
}else{
s = s[i:]
break
}
}
for i, j := range s{
if i == 0 && (j == 43 || j == 45){
m = -(int(j)-44)
continue
}
switch {
case (j >= 48 && j <= 57):
n = n * 10 + int(j) - 48
default:
return n * m
}
if n * m >= 2<< 30-1 {return 2<<30-1}
if n * m <= -2147483648{return -2147483648}
}
return n * m
}
第九題:迴文數
這題和整數反轉一模一樣,我就不贅述了
func isPalindrome(x int) bool {
if x < 0 {return false}
if x < 10 {return true}
n := 0
y := x
for (x != 0){
n = n * 10 + x % 10
x = x / 10
}
return n == y
}