题目
回文数,即一个整数,将它各位上的数字从左到右反过来得到的数字依然等于原来的整数。如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;
}