def pdn(x):
"""判斷是否為回文數
:param x: 非負正整數
:return: 返回乙個布林型別,是回文數,返回true,否則返回false
"""for i in range(0,len(str(x))):
if str(x)[i] != str(x)[len(str(x)) -1 - i]:
return false
return true
def is_palindrome(num):
"""判斷乙個數是不是回文數
:param num: 乙個非負整數
:return: 是回文數返回true否則返回false
"""temp = num
total = 0
while temp > 0:
total = total * 10 + temp % 10
temp //= 10
return num == total
def pdn_ss(x):
from math import sqrt
for i in range(2, int(sqrt(x)) + 2):
if x % i == 0:
return false
for i in range(0,len(str(x))):
if str(x)[i] != str(x)[len(str(x)) -1 - i]:
return false
return true
if __name__ == '__main__':
number = int(input('請輸入乙個非負整數:'))
# and和or運算子都是帶短路功能的運算子
# 如果and左邊的表示式是false 那麼右邊的表示式被短路(不執行)
# 如果or左邊的表示式是true那麼右邊的表示式被短路(不執行)
# 所以左右兩邊的表示式放置的順序可能會對執行效率產生明顯的影響
if is_prime__(number) and is_paslindrome(number):
print('是回文素數')
else:
print('不是回文素數')
#短路and和or的功能例子:
def f1():
print('f1')
return true
def f2():
print('f2')
return false
if __name__ == '__main__':
if f1() or f2():
print('ok')
else:
print('not ok')
輸出結果是f1 ok 不會執行f2的函式 因為f1()為真以後,不會判斷f2()
判斷回文串,判斷回文數,最長回文串,回文串的個數
判斷乙個字串是否是回文串,首先了解下它的定義 回文串 是乙個正讀和反讀都一樣的字串,比如 level 或者 noon 等等就是回文串。所以判斷是否是回文串,判斷這個字串是否對稱即可。從而用兩個指標同時向中間掃瞄即可判斷。判斷字串是否是回文串,即判斷是否對稱。兩邊指標同時向中間掃瞄,判斷是否相等,不等...
回文數的判斷
其實是很簡單的乙個東西,只不過覺得今天的寫了之後看了別人的 覺得挺有意思的,所以記錄下來。要求就是給乙個int型的數,判斷是否為回文數。我的想法很簡單,就是把這個數的每乙個數字分離開放到乙個陣列,然後迴圈跑一遍判斷是不是回文就好了。如下 bool ispalindrome int x for i 0...
回文數的判斷
起初考慮的用到了vector,將他們拆分以後依次判斷頭和尾,近乎暴力匹配 if x 0 else if x 10 vector int v while x if v.size 2 else for int i 0 i v.size 2 i return true 看到題解的優化方法,是依次取餘 我也...