判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗?
class Solution {
public boolean isPalindrome1(int x) {//将整数转为字符串来解决这个问题
String str=Integer.toString(x);
int mid=str.length()/2;
for (int i = 0,j=str.length()-1; i <=mid&&j>=mid; i++,j--) {
if(str.charAt(i)!=str.charAt(j))
return false;
}
return true;
}
public boolean isPalindrome2(int x) {//不将整数转为字符串来解决这个问题
if(x<0)
return false;
int res=0;
int x2=x;
while(x2!=0){
if(res!=res*10/10)//判断溢出,溢出的话 数据sum/10 和原来的sum 不相等
return false;
res=res*10+x2%10;
x2=x2/10;
}
if(x!=res)
return false;
return true;
}
}
public class Main {
public static void main(String[] args) {
Solution solution=new Solution();
System.out.println(solution.isPalindrome1(123));
System.out.println(solution.isPalindrome2(-121));
}
}