Palindrome Number
2020/09/07
共 311 字
约 1 分钟
归档: 学习
利用取整和取余来获得首位和尾位
009 Palindrome Number
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
题解1
直接做进阶好了,经典做法就是利用除法取整获得首位数字,利用求余获得尾部数字
/**
* 题解1
* 利用取整和取余来获得想要的数字,比如 1221 这个数字,1221 / 1000,得首位1,1221 % 10,得到末尾1
* @param x
* @return
*/
public boolean isPalindrome(int x) {
if (x < 0) return false;
int d = 1;//除数divisor
while (x / d >= 10) d *= 10;//使得x/d后只剩下一位数
while (x > 0) {
int left = x / d;
int right = x % 10;
if (left != right) return false;
x = (x % d) / 10;//去掉x的头位与末位
d /= 100;//x少了两位数,除数也少两位
}
return true;
}
留言