演算法之回文數

2021-10-17 23:19:56 字數 814 閱讀 8278

題目:

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

簡單去思考,就是轉換為字串去判斷是否為回文數。

public

boolean

ispalindrome

(int x)

else

}

高階一下的話:

將數字本身反轉,然後將反轉後的數字與原始數字進行比較,如果它們是相同的,那麼這個數字就是回文。

但是,如果反轉後的數字大於 int.max,我們將遇到整數溢位問題。

為了避免數字反轉可能導致的溢位問題,為什麼不考慮只反轉int數字的一半?畢竟,如果該數字是回文,其後半部分反轉後應該與原始數字的前半部分相同。

public

boolean

ispalindrome

(int x)

int revertednumber =0;

while

(x > revertednumber)

// 當數字長度為奇數時,我們可以通過 revertednumber/10 去除處於中位的數字。

// 例如,當輸入為 12321 時,在 while 迴圈的末尾我們可以得到 x = 12,revertednumber = 123,

// 由於處於中位的數字不影響回文(它總是與自己相等),所以我們可以簡單地將其去除。

return x == revertednumber || x == revertednumber /10;

}

演算法 回文數

題目描述判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 ...

經典C語言演算法之回文數

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...

演算法訓練 回文數

演算法訓練 回文數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 若乙個數 首位不為零 從左向右讀與從右向左讀都一樣,我們就將其稱之為回文數。例如 給定乙個10進製數56,將56加65 即把56從右向左讀 得到121是乙個回文數。又如 對於10進製數87 step1 87 78 165 ...