LeetCode - Palindrome Number
今天我們要講解的是 [Palindrome Number],這在 LeetCode 算是比較簡單的題目,讓我們一起開始吧!
進來之前請先注意,我的方式不一定完全正確,只是依照我自己的理念進行撰寫,所以如果程式上有什麼更好的解法,歡迎提出見解。
這次題目
Given an integer x, return true if x is a palindrome, and false otherwise.
Example
1 | Input: x = 121 |
1 | Input: x = -121 |
1 | Input: x = 10 |
Follow up: Could you solve it without converting the integer to a string?
自已解法
這次主要是一個判斷回文的題目,簡單的解法,可以先把字串轉為陣列接著進行反轉,接著變回字串來進行判斷,大概的解法如下:
1 | /** |
不過他有提供另一個小挑戰,希望能不轉為字串的情況下進行判斷,首先我們先排除0以下的,即可直接返回false
,接著我們把x
代入到number
的參數裡,接著建立一個相反值rever
為0,這部分我們之後會用到。
1 | /** |
接著我們思路是,可以透過取餘數%10
的方式去抓原本number
最後一個值放進rever
,接著再把最後一個值拿掉,藉由Math.floor(number/10)
,強制把小數點拿掉,例如125 => 12.5 => 12
,完成後把算出來的值放進number
,到下一輪時我們在重複上個動作,直到我們把number變為0即可獲得反轉後的數字,最後我們在進行判斷即可。
然而下方每次rever*10
,這主要為了讓數字往前推,例如上面 125%10 => 5
,接著下一階段12%10 => 2
,我們必須要把上一階段的5
往前推,所以透過*10
可以達到我們要的目的: (5*10) + 2 = 52
1 | /** |
實作結果
如此一來就完成了!