1. 程式人生 > 其它 >leetcode 7,8,9題記錄

leetcode 7,8,9題記錄

技術標籤:演算法

第七題:整數反轉

這是一道簡單難度的題,思路很簡單,迴圈開始時容器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
}

在這裡插入圖片描述