LeetCode筆記 9 回文數

2021-10-21 19:48:58 字數 2329 閱讀 7785

給你乙個整數 x ,如果 x 是乙個回文整數,返回 true ;否則,返回 false 。

回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。例如,121 是回文,而 123 不是。

示例 1:

輸入:x =

121輸出:true

示例 2:

輸入:x =

-121

輸出:false

解釋:從左向右讀, 為 -

121 。 從右向左讀, 為 121

- 。因此它不是乙個回文數。

示例 3:

輸入:x =

10輸出:false

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

示例 4:

輸入:x =

-101

輸出:false

-

231<= x <=

231-

1

高階:你能不將整數轉為字串來解決這個問題嗎?

前幾天面試還碰到這道題了,但是面試題目要難許多。先放個解法。

再換個解法

class

solution

(object):

defispalindrome

(self, x)

:"""

:type x: int

:rtype: bool

"""s=

str(x)

i=0 stop=

int(

len(s)/2

)+1while i

if s[i]

==s[

-i-1]:

i=i+

1else

:return

false

if i ==stop:

return

true

else

:return

false

效能有了些微改善。

上面兩種解法都沒有逃脫把x先轉換成string再判斷的思路。

首先,負數和尾數為0的數字均不是回文數。

其次,對於剩下的數字,將數字通過相除取餘進行翻轉,當原始數字的部分小於或等於翻轉後的數字,就說說明已經翻轉了一半(奇偶要分開考慮)。官方題解沒有給出python**,自己寫了一下。

class

solution

(object):

defispalindrome

(self, x)

:"""

:type x: int

:rtype: bool

"""if(x<0)

|((x%10==0

)&(x!=0)

):return

false

else

: o=x

n=0while o>n:

n=n*

10+o%

10 o=o//

10if o==n:

return

true

else:if

(n//10)

==o:

return

true

else

:return

false

避開了string,但效能也沒有提高。

其餘的都大同小異吧。。不列舉了

leetcode題目9 回文數

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 輸入 121 輸出 true解法一 數字轉字串 class solution def ispalindrome self,x type x int rtype bool if x 0 return fals...

leetcode演算法9 回文數

目錄 給你乙個整數 x 如果 x 是乙個回文整數,返回 true 否則,返回 false 回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。例如,121 是回文,而 123 不是。思路一 先將整數轉為字串 然後將字串分割為陣列,只需要迴圈陣列的一半長度進行判斷對應元素是否相等即可。這種方...

LeetCode 9 回文數(簡單)

點此去做 題幹 判斷乙個整數是否是回文數。回文數是指正序和倒序都是一樣的整數。你能不將數字轉化為字串做嗎?輸入 121 121 10輸出 true false false執行用時 28ms,11.5mb 思想 最開始想要借用整數翻轉的 先將整數翻轉後再做相等比較,結果發現用例中有會造成溢位的大數,不...