題目:给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
此題就是得到每個位置的數字,然後將其拼接與原數進行比較即可判斷是否為回文數。難點在於取出每個位置的數,下面是一種較為巧妙的取數方法。
思路:我們先對數據除10取餘(%10),即可得到個位的數字,然後再進行除操作( /10),去掉所給數據個位的數字,再對數字拼接到最左邊,然後下一次我們再按照以上操作,就可以得到十位的數,以此反復,我們就可以得到數據每個位置的數字了,然後進行拼接即可進行比較判斷是否為回文數。
這裡有個難點就是,我們如何得到拼接後的數據了,如果是乘10,乘100的這樣子去拼接,會顯得比較複雜,但也是能做。我們這裡先定義了一個變量num用於記錄拼接後的數據,令其初始值為0,第一次得到個位數時,我們就令num=num*0+ge。這樣利用循環,就很好的將數字拼接起來了。
擔心小白不理解,我們以1234為例,第一次取得個位的數字4,num=num*10+4=4,第二次我們可以得到3,num=4*10+3=43,第三次可以得到2,num=43*10+2=432,最後就順利得到4321。
下面是實現代碼:
class Solution {
public boolean isPalindrome(int x) {
//設置臨時變量,用於記錄原本的x
int temp=x;
//設置變量用於記錄拼接後的數字,方便進行比對
int num=0;
//多位數字利用for循環從右往左獲取每一位數字
while (x!=0&&x>0){
//從右往左獲取每一個數字
int ge =x%10; //獲取個位的數字
//對數據進行處理方便下一次循環取出十位的數字
x=x/10; //去掉了個位的數,x減少一位,下一次循環取得的即為十位
//把當前獲取到的數字拼接到最左邊
num=num*10 +ge ;
}
//比較
if(num==temp&&temp>=0){ //注意負數和不等於0的情況
return true;
}else {
return false;
}
}
}
标签:我們,10,100%,擊敗,---,拼接,num,數字,回文 From: https://blog.csdn.net/qq_59611575/article/details/139375096