tft每日頭條

 > 生活

 > julia語言界面

julia語言界面

生活 更新时间:2024-07-20 09:20:49
2. 回文數

給你一個整數 x ,如果 x 是一個回文整數,返回 true ;否則,返回 false 。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

  • 示例 1:

輸入:x = 121

輸出:true

  • 示例 2:

輸入:x = -121

輸出:false

解釋:從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是一個回文數。

  • 示例 3:

輸入:x = 10

輸出:false

解釋:從右向左讀, 為 01 。因此它不是一個回文數。

解法一:普通解法

最好理解的一種解法就是先将 整數轉為字符串 ,利用字符串的方法求解。

function ispalindrome(x) s = string(x) s == reverse(s) end

上面的方法中運用了Julia的一些特性。

  • 函數返回的值是最後計算的表達式的值,默認情況下,它是函數定義主體中的最後一個表達式。所以上面的方法中可以不在“s == reverse(s)”前加 “return”關鍵字。

julia語言界面(力扣題解之Julia語言)1

  • Base.string—Function

string(n::Integer; base::Integer = 10, pad::Integer = 1)

将整數 n 轉換為給定基數(base)的字符串,可選擇指定要填充的位數(pad)。默認為十進制。

julia語言界面(力扣題解之Julia語言)2

  • Base.reverse—Method

reverse(s::AbstractString) -> AbstractString

反轉字符串。

解法二:數學解法
  • 負數一定不是回文數,直接返回 false
  • 除了 0 以外,所有個位是 0 的數字不可能是回文,因為最高位不等于 0。所以我們可以對所有大于 0 且個位是 0 的數字返回 false。

直觀上來看待回文數的話,就感覺像是将數字進行對折後看能否一一對應。

所以這個解法的操作就是 取出後半段數字進行翻轉。

這裡需要注意的一個點就是由于回文數的位數可奇可偶,所以當它的長度是偶數時,它對折過來應該是相等的;當它的長度是奇數時,那麼它對折過來後,有一個的長度需要去掉一位數(除以 10 并取整)。

具體做法如下:

  1. 每次進行取餘操作 ( ),取出最低的數字:y = x % 10
  2. 将最低的數字加到取出數的末尾:revertNum = revertNum * 10 y
  3. 每取一個最低位數字,x 都要自除以 10
  4. 判斷 x 是不是小于 revertNum ,當它小于的時候,說明數字已經對半或者過半了
  5. 最後,判斷奇偶數情況:如果是偶數的話,revertNum 和 x 相等;如果是奇數的話,最中間的數字就在revertNum 的最低位上,将它除以 10 以後應該和 x 相等。

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 的整數部分

julia語言界面(力扣題解之Julia語言)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved