【題目】
定義回文數的概念如下:
1. 如果乙個非負數左右完全對應,則該數是回文數,例如:121,22等
2. 如果乙個負數的絕對值左右完全對應,也是回文數,例如:-121,-22等
給定乙個32位整數num,判斷num是否是回文數。
【基本思路】
具體過程如下:
1、假設判斷的數字為非負整數n,先生成變數help,開始時help = 1
2、用help不斷地乘以10,直到變得與num的位數一樣
3、那麼num/help的結果就是最高位的數字,num%10就是最低位的位置,比較這兩個數字,不相同則直接返回false。相同則令num = (num % help) / 10,即num變成除去最高位和最低位兩個數字之後的值。令help /= 100,即讓help變得繼續和新的num的位數一樣
4、如果num == 0,表示所有的數字已經對應判斷完畢,返回true,否則重複步驟3
上述方法就是讓num每次剝掉最左和最右的兩個數。需要注意的是,上述方法只適用於非負數,如果n為負數,先把n變成其絕對值,然後用上面的方法進行判斷。特別注意,如果n是32位最小值的話,它是轉不成相應的絕對值的,並且這個數很明顯不是回文數,直接返回false即可。
【**實現】
#python3.5
defisplindrome
(num):
if num == -(1
<< 31):
return
false
num = abs(num)
base = 1
while base <= num:
base *= 10
base //= 10
while num != 0:
if num % 10 != num // base:
return
false
num = num % base // 10
base //= 100
return
true
判斷乙個數是否是回文數
題目 定義回文數的概念如下 如果乙個非負數左右完全對應,則該數是回文數,如 121,22 如果乙個負數的絕對值左右完全對應,則該數是回文數,如 121,22 public static void main string args printrandm arr,3 1 5 4 system.out.p...
判斷乙個數字是否是回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...
判斷乙個數字是否是回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。看到這個題目最先想到的就是將這個整形數字轉化成字元陣列,然後對這個字元陣列進行遍歷,這種思路當然是可以的,但是時間複雜度較高,還要引入乙個陣列,空間複雜度較高。第二個想法是將數字本身反轉,然後將反轉後的數字與原始...