问题描述
- 在不使用额外的内存空间的条件下判断一个整数是否是回文。
- 回文指逆序和正序完全相同。
提示:
负整数可以是回文吗?(比如-1)
如果你在考虑将数字转化为字符串的话,请注意一下不能使用额外空间的限制
你可以将整数翻转。
解题思路:
通过取整和取余操作获取整数中对应的数字进行比较。
例如:1221
通过计算 1221 / 1000, 得首位1
通过计算 1221 % 10, 可得末位 1
进行比较
再将 22 取出来继续比较
import java.util.*;
public class Solution {
public boolean isPalindrome (int x) {
//minus number couldn't be count
if(x<0){
return false;
}
int div = 1;
//find the biggest number to cal the first position of the number
while(x/div >= 10){
div *= 10;
}
while(x>0){
//find the first and last position
int left = x/div;
int right = x%10;
//compare these two numbers
if(left != right){
return false;//if inequal, return false
}
//get the middle numbers
x = (x%div)/10;
div /= 100;
}
return true;
}
}