1. 程式人生 > >LeetCode Golang 9.迴文數

LeetCode Golang 9.迴文數

9. 迴文數

第一種辦法 :itoa 轉換為字串進行處理:

package main

import (
	"strconv"
	"fmt"
)

//判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
//
//示例 1:
//
//輸入: 121
//輸出: true
//示例 2:
//
//輸入: -121
//輸出: false
//解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個迴文數。
//示例 3:
//
//輸入: 10
//輸出: false
//解釋: 從右向左讀, 為 01 。因此它不是一個迴文數。

func main() {
	fmt.Println(isPalindrome(0))
}


func isPalindrome(x int) bool {
	if x < 0 {
		return false
	}

	if x < 10 {
		return true
	}

	arrX := strconv.Itoa(x)

	for i := 0; i < len(arrX)/2; i++ {
		if arrX[i] != arrX[len(arrX)-i-1] {
			return false
		}
	}
	return true
}

  

 

第二種辦法:

純數學, 將 輸入的數字全部反過來 123->321, 再返回 == 比較結果

func isPalindrome(x int) bool {
	if x < 0{
		return false
	}
	pre := x
	rev := 0
	for x != 0{
		rev = rev * 10 + x % 10
		x /= 10
	}
	return rev == pre
}