迴文數-力扣 來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/palindrome-number 著作權歸領扣網路所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。 題目描述 給你一個整數 x ,如果 x 是一個迴文整數,返回 true ;否則,返回 ...
迴文數-力扣
來源:力扣(LeetCode) 鏈接:https://leetcode.cn/problems/palindrome-number 著作權歸領扣網路所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
題目描述
給你一個整數 x ,如果 x 是一個迴文整數,返回 true ;否則,返回 false 。
迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
例如,121 是迴文,而 123 不是。
思路
- 首先應確定,負數必定不是迴文數。
- 任何一個以0結尾的數(不包括0)必定不是迴文數,例10,110,30。
- 其次,如果該數(x)數字位數為奇數,那麼該數處於最中間位數的數無需進行判斷
- x若對10取餘,則可以求出最後一位數,x除以10,則可以去掉最後一位數,如此迴圈,則可以將每個數求出。
- 那麼我們的思路就顯而易見了,先設置負數與以0結尾的數返回值為false,接著對其他的數進行判斷,設置一個中間量temp,對x進行取餘操作的結果進行接收,後續的接收便是temp*10再加上x/10再取餘的結果。對上述操作進行迴圈直至x<=temp即可。
- 這裡需要強調的是,由於x一直在進行x/10操作,而temp一直在接收x去掉的數,所以迴圈結束後應註意對x數字個數分情況判斷。若x位偶數則直接判斷是否相等即可,x為奇數則應對中間量temp進行除以十的操作,以去掉中間的那個數,再進行判斷
代碼
class Solution {
public boolean isPalindrome(int x) {
if(x < 0 || x%10 ==0 && x != 0)
return false;
int temp = 0;
while(x > temp){
temp = x % 10 + temp * 10;
x /= 10;
}
return x == temp || x == temp / 10;
}
}
提交截圖