給你一個整數 x ,如果 x 是一個回文整數,返回 true ;否則,返回 false 。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
輸入:x = 121
輸出:true
輸入:x = -121
輸出:false
解釋:從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。
輸入:x = 10
輸出:false
解釋:從右向左讀, 為 01 。因此它不是一個回文數。
解法一:普通解法最好理解的一種解法就是先将 整數轉為字符串 ,利用字符串的方法求解。
function ispalindrome(x)
s = string(x)
s == reverse(s)
end
上面的方法中運用了Julia的一些特性。
string(n::Integer; base::Integer = 10, pad::Integer = 1)
将整數 n 轉換為給定基數(base)的字符串,可選擇指定要填充的位數(pad)。默認為十進制。
reverse(s::AbstractString) -> AbstractString
反轉字符串。
解法二:數學解法直觀上來看待回文數的話,就感覺像是将數字進行對折後看能否一一對應。
所以這個解法的操作就是 取出後半段數字進行翻轉。
這裡需要注意的一個點就是由于回文數的位數可奇可偶,所以當它的長度是偶數時,它對折過來應該是相等的;當它的長度是奇數時,那麼它對折過來後,有一個的長度需要去掉一位數(除以 10 并取整)。
具體做法如下:
function ispalindrome(x)
(x < 0 || x % 10 == 0 && x != 0) && return false
revertedNumber = 0
while x > revertedNumber
revertedNumber = revertedNumber * 10 x % 10
x ÷= 10
end
x == revertedNumber || x == revertedNumber ÷ 10
end
在Julia語言中 “÷” 才是整除。
x / y |
除法運算符 |
執行除法 |
x ÷ y |
整除 |
取 x / y 的整數部分 |
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!