問題描述
給定乙個正整數,判斷這個正整數是否是回文數。要求不能把給定的整數轉換成字串的格式。
測試樣例
參考**
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ---------------------
# o(logn) time|o(1) space
# ---------------------
import math
# 判斷乙個整數是否是回文數的方法就是比較它的第乙個數字和最後乙個數字,
# 如果這兩個數字相等的話,就使用同樣的方法繼續比較去掉這兩位之後的數
# 直到整數的位數小於等於兩位
defispalindrome
(num)
:if num ==0:
return
true
# 但是要求不能將整數數值轉換為字串判斷,所以需要使用其他方法獲取首位和末位數字
# 數字 num 的首位可以通過 num//(10^(k-1) 獲得,其中 k 是 num 的 總位數。
# 數字的 num 末位可以通過 num%10 獲得。
# 而數字 num 的總位數 k,可以對 num 進行 log10 運算取整後 +1 獲得。
# 例如 num = 123,那麼 k = int(log10(123))+1 = 3
# 因此首位為 num//(10**(k-1)) = 1, 末位為 num%10 = 3
while num >0:
k =int(math.log10(num))+
1 firstdigit = num //(10
**(k-1)
) lastdigit = num %
10if firstdigit != lastdigit:
return
false
num = num %(10
**(k-1)
) num = num //
10return
true
# test program
num1 =
1234321
num2 =
1234322
print
(ispalindrome(num1)
)print
(ispalindrome(num2)
)# true
# false
字串?(回文)
g 字串?description 回文串是指ababa,abba,cccc這樣左右對稱的字串。每個字串我們都可以新增若干個字元使它變成乙個回文串。每次新增乙個字元都會耗費一定的時間,我們規定第一次新增耗費1s,第二次2s,第三次3s,第n次n秒。請問最少需要多長時間可以使現有的字串變成回文字串?in...
字串 驗證回文串
問題 力扣演算法面試彙總 問題描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。例子 輸入 a man,a plan,a canal panama 輸出 true 輸入 s a man,a plan,a canal pa...
判斷字串回文
方法一 使用reverse split separator,howmany 把乙個字串分隔成字串陣列 param separator 必需。字串或正規表示式,從該引數指定的地方分割 stringobject param howmany 可選。該引數可指定返回的陣列的最大長度。如果設定了該引數,返回的...