演算法學習(五) 判斷乙個整數是否是回文數字

2021-10-23 12:58:25 字數 854 閱讀 6875

題目:在不使用額外的記憶體空間的條件下判斷乙個整數是否是回文數字(int型整數)

思路:首先負數肯定都不是回文數字,所以我們需要考慮的只有0和正數。由於不能使用額外的記憶體空間,這裡就需要放棄將數字轉化為字串或者使用陣列這兩種辦法。這裡我想到的辦法是,根據輸入的整數,我們將其拆分,分別將首位數字和末尾數字單獨拆出來,進行比較是否相等,不相等則直接返回false(非回文);若相等,則去該數字的頭尾,對剩下的部分重複這樣的頭尾比較操作,直到只剩下0位或者1位數。如:1331,我們先得到頭部為1,尾部為1,比較相等,去掉頭尾的兩個1,剩下33;再對33取頭尾,頭部為3,尾部為3,去掉頭尾之後迴圈結束,返回true(回文)。

那麼在這裡,我這個辦法的關鍵就是如何得到乙個整型數的頭尾了。這就需要靈活地運用%和/這兩個符號了,%是取餘操作,/是除法操作。首先,我們需要知道乙個整數的位數,我們用multiple來表示該整數的數量級(multiple為10的倍數),times來表示該整數的位數。隨後,用x/multiple得到首位數字,用x%10得到末尾數字,進行比較。最後x = x % multiple; x = x / 10;剔除首尾,持續迴圈。如果在迴圈結束前有任何首尾不相等,則會返回false;否則返回true。

實現過程:

public boolean ispalindrome (int x)

if(x == 0)

int multiple = 1;//x的數量級

int times = 0;//x的位數

while(x / multiple >9)

for(int i=0;i小小萌新乙隻,如有不足之處還望多多指正,不勝感激。希望和大家一起砥礪前行!

判斷乙個整數是否為素數 確定乙個整數是否是2的冪

給定乙個整數,編寫乙個函式來確定它是否是2的冪。範圍 1 2 31 1 測試用例 輸入 16,輸出 true 因為 2 4 16 輸入 18,輸出 false.最明顯的暴力方法就是除以2,然後檢查它是否達到1。var poweroftwo function n 由於給出的範圍在0 2 31 1之間,...

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

判定乙個正整數是否是乙個回文數。例如12121是回文數,而1231不是回文數。要判斷乙個整數是否是回文數,最自然的想法是把整數轉換成乙個字串,然後根據回文的對稱特性進行判斷。數字轉換為字串可以通過itoa函式實現,判斷字串是否為回文字串 如下 bool ispalindrome string str...

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

1 c語言不允許函式巢狀定義。解決辦法就是將函式放到外面定義。2 c語言裡沒有bool型true,false。需要自己定義 define bool int define true 1 define false 0或者使用標頭檔案stdbool.h。判斷乙個整數是否是回文數。include defin...