题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
方法一:将整数反转,看是否和原来的整数相等
java:
public boolean isPalindrome(int x ) {
boolean b =false;
//如果是负数,肯定不是回文
if(x < 0){
return false;
}else if(x >= 0){
//保存x值
int y = x;
int answer = 0;
while (x != 0) {
//用%10的方法取最后一个数字
int a = x % 10;
// x/10减少一个数位
x /= 10;
//把这个数加到反转后的数的末位
answer = answer * 10 + a;
}
b = answer == y;
}
return b;
}
方法二: 将数字变换成字符串,然后反转字符串,判断是否和原字符串相等
java:
public boolean isPalindrome(int x) {
String s = new Integer(x).toString();
String s2 = "";
for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
s2 += c;
}
return s2.equals(s);
}
方法三:将一半的数字进行反转,同前一段数字进行比较
java:
public static boolean IsPalindrome(int x) {
if(x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int revertedNumber = 0;
while(x > revertedNumber) {
revertedNumber = revertedNumber * 10 + x % 10;
x /= 10;
}
return x == revertedNumber || x == revertedNumber/10;
}