問題描述
判斷一個整數(shù)是否是回文數(shù)蝇更』Ρ啵回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。
示例 1:
輸入: 121
輸出: true
示例 2:輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 年扩。 從右向左讀, 為 121- 蚁廓。因此它不是一個回文數(shù)。
示例 3:輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 厨幻。因此它不是一個回文數(shù)相嵌。
進階:你能不將整數(shù)轉為字符串來解決這個問題嗎?
况脆。
解決方案
第一種 使用遞歸饭宾,轉換成字符
class Solution {
public boolean isPalindrome(int x) {
if(x<0)
return false;
return help(x+"");
}
public boolean help(String temp){
if(temp.length()<=1)
return true;
if(temp.charAt(0) != (temp.charAt(temp.length()-1))){
return false;
}else{
return help(temp.substring(1,temp.length()-1));
}
}
}
image.png
第二種 不用字符串 數(shù)字反轉比較
將整個數(shù)字反轉過來,然后判斷和原來的是否相等格了。
class Solution {
// 如果是 負數(shù)直接返回false
//
public boolean isPalindrome(int x) {
if(x<0)
return false;
int temp = x;
int result =0;
while(temp>0){
int index =temp%10;
result = result*10 + index;
temp /=10;
}
return result==x?true:false;
}
}
最大值 2147483648 0x7fff ffff
最小值 -214783467 0x8000 0000
image.png