LeetCode 9 回文數(簡單)

2022-09-05 03:06:09 字數 1156 閱讀 8713

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

輸入: 121

輸出: true

輸入: -121

輸出: false

解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。

輸入: 10

輸出: false

解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。

你能不將整數轉為字串來解決這個問題嗎?

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

例如,輸入 1221 ,我們可以將數字「1221」的後半部分從「21」反轉為「12」,並將其與前半部分「12」進行比較,因為二者相同,我們得知數字 1221 是回文。

首先,我們應該處理一些臨界情況。所有負數都不可能是回文,例如:-123不是回文,因為-不等於3。所以我們可以對所有負數返回false。

現在,讓我們來考慮如何反轉後半部分的數字。

對於數字1221,如果執行1221%10,我們將得到最後一位數字1,要得到倒數第二位數字,我們可以先通過除以10把最後一位數字從1221中移除,1221/10=122,再求出上一步結果除以10的餘數,122%10=2,就可以得到倒數第二位數字。

如果我們把最後一位數字乘以10,再加上倒數第二位數字,1*10+2=12,就得到了我們想要的反轉後的數字。如果繼續這個過程,我們將得到更多位數的反轉數字。

現在的問題是,我們如何知道反轉數字的位數已經達到原始數字位數的一半?

我們將原始數字除以10,然後給反轉後的數字乘上10,所以,當原始數字小於反轉後的數字時,就意味著我們已經處理了一半位數的數字。

class

solution

int cur = 0;

int num =x;

while (num != 0)

//如果反轉後的數字

return cur ==x;

}}

LeetCode 9 回文數(簡單)

點此去做 題幹 判斷乙個整數是否是回文數。回文數是指正序和倒序都是一樣的整數。你能不將數字轉化為字串做嗎?輸入 121 121 10輸出 true false false執行用時 28ms,11.5mb 思想 最開始想要借用整數翻轉的 先將整數翻轉後再做相等比較,結果發現用例中有會造成溢位的大數,不...

陣列 Leetcode9回文數

leetcode9 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 輸入 121 輸出 true 思路1 先變成字串然後對比 class solution return true 思路2 數字對比 class solution while num 0 r...

leetcode 9 回文數 python 實現

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