iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
自我挑戰組

30 天學 Golang?Go 啦哪次不 Go系列 第 19

Day19# Leetcode - Palindrome Number

今天是第 19 天,要來寫的題目是 Palindrome Number
那麼話不多說,我們就開始吧 ─=≡Σ(((っ›´ω`‹ )っ!

# Example1

Input: x = 121
Output: true
# Example2

Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
# Example3

Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Palindromic number 又稱做迴文數,先大概來摘要一下這題的重點:

  • 將數字反轉後,內容還是相同
  • 負數的狀況不成立,畢竟 -100 相反後並沒有 100- 的值
  • 尾數是 0 的話,反轉也不會成功

一開始不知道該怎麼下手,就先從最簡單的第二項不能是負數的下手吧!

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

接下來就要思考,怎麼樣得到相反的值勒~
應該可以使用跑迴圈的方式,透過每次取餘數的方式得到最後一個值再加總起來,這樣就能夠得到相反的數值了!

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

	tmp := x
	num := 0

	for tmp > 0 {
		remainder := tmp % 10
		num = (num * 10) + remainder
		tmp /= 10
	}

	res := x == num
	return res
}

成功啦!

結尾

看起來 runtime 是有點點久還有待加強,但先有再求好XD
有任何問題歡迎與我告知 :)
本篇文章同步發佈於 我的部落格


上一篇
Day18# Leetcode TwoSum
下一篇
Day20# Leetcode - Roman to Integer
系列文
30 天學 Golang?Go 啦哪次不 Go20

尚未有邦友留言

立即登入留言