題目
迴文數,即一個整數,將它各位上的數字從左到右反過來得到的數字依然等於原來的整數。如1221反過來還是1221,所以它是迴文數。而-11反過來是11-,所以不是迴文數。那麼如何判斷一個整數是不是迴文數?
思路
第一種思路
將數字轉換爲字符串,然後反轉字符串,再與之前的比較看是否相等。
第二種思路
將整數最高位的數字取出,和整數末位的數比較是否相等,如果相等再取出第二位和倒數第二位的數字進行比較,依次類推。
代碼
1.轉換爲字符串
public Boolean isPalindrome(int x) {
//轉換爲字符串
StringBuffer numStr = new StringBuffer(x+"");
//字符串反轉
StringBuffer reverseNumStr = numStr.reverse();
//比較
if (numStr.equals(reverseNumStr)) {
return true;
}
return false;
}
2.取各位上的數字進行比較
public Boolean isPalindrome(int x) {
//負數不可能是迴文數
if (x < 0) {
return false;
}
//尾數爲0不可能是迴文數,0除外。
if (x % 10 == 0 && x != 0) {
return false;
}
//循環取出首位和末位的數字進行比較
int a = 10;
//個位數肯定是迴文數
if (x/a == 0) {
return true;
}
while (x/a >= 10) {
a = a*10;
}
while (x > 0) {
//考慮121這種情況
if (a == 1) {
return true;
}
int left = x / a;
int right = x % 10;
x = x % a;
x = x / 10;
if (left != right) {
return false;
}
a = a / 100;
}
return true;
}