Leetcode練習《十二》 判斷整數是否為回文

2021-08-02 07:31:59 字數 2112 閱讀 7345

# determine whether an integer is a palindrome. do this without extra space.

# 判斷乙個整數是否是回文

, 不能使用新的空間

, 我的理解就是不能使用新的變數來儲存資料

# 思路很簡單

, 就是先取最高位

, 再取最低位

, 兩個比較是否相等

, 相等的話就接著下一步

, 不相等就返回

false

# 重點在於怎樣取最高位和最低位

, 取整也就是除以和整數字數相等的

10的次方, 即

10^len(num)

# 取最低位就是除以

10,

除完之後取整用到的被除數變為

10^(len(num) - 2)

classsolution(object):

defispalindrome(self

, x):

ifx < 0:

return falseranger = 1

whilex / ranger >= 10:

ranger *= 10

# b = 10 ** int(math.log10(123))

# print(ranger)

whilex:

left = x // ranger

right = x % 10

# print('left = ', left, 'right = ', right)

ifleft != right:

return falsex = (x % ranger) // 10

print(x)

ranger /= 100

return truedefispalindrome2(self

, x):

ifx < 0:

return falsep, res = x,

0whilep:

res = res * 10 + p % 10

# 生成倒序的

xp = p // 10

returnres == x

if__name__ == '__main__':

num = 12321

s = solution()

print(s.ispalindrome(num))

如題:

判斷乙個整數是否為回文,題目要求說負數不是回文,而且不讓使用額外的空間,我理解的額外空間就是不再建立新的變數儲存x,不知道對不對,還望大神給我解答

再把思路捋一捋:

第一步建立乙個和原數字數量級一致的整數ranger,比如我的x是123, 那這個ranger就是100, x是1234, ranger就是1000. 懂我意思?生成這個ranger有兩種方法:

1  ranger = 10 ** len(x)       簡單粗暴

2  ranger = 10 ** int(math.log10(x))   思路是一樣的, 我**中的方法太弱雞了

兩個乘號代表乘方

第二步獲得x的最高位和最低位,比較最高位和最低位是否相同,如果不相同那就返回false

如果相同,就把x的頭和尾去掉,ranger要除以100, 再重複上個步驟

最高位為 left = x // ranger 

最低位為 right = x % 10

注意:python中取整是雙斜槓 //

乘方是雙乘號 **

取餘是單百分號 %

(十二)Python函式練習

函式 定義函式 defprint me test 列印任何傳入的字串 print test 呼叫函式 print me 我要呼叫使用者自定義函式 print me 再次呼叫同一函式 不定長引數 加了星號 的引數會以元組 tuple 的形式匯入 defprint info arg1,var tuple...

假期練習小結十二

網頁製作會 到的圖 格式有哪些?解析 png 8 png 24 jpeg gif svg webp apng 前面基礎格式都不是面試官想要的最後答案。試官希望聽到是 webp apng webp webp 格式,谷歌 google 開發的 種旨在加快圖 載入速度的圖 格式。壓縮體積 約只有 jpeg...

面經練習(十二)

1.defer 2.async 3.手動生成script標籤 function loadscript url,callback else loadscript tool.js function tool.js function text 第一層物件為深拷貝,其它層為淺拷貝 單頁面應用 為什麼單頁面對...