自言自语
题目来源于leetcode,每日一刷小算法。
不管遇到什么挫折,明天的太阳都会照样升起
题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
分析:
回文数一般短小的我们肉眼就可以看出来嘛,因为前一半后一半是对称的。
所以我们把后面一半的数字反向取出,跟前一半对比是否相等。
通过可以获取最后一个数字,通过
a = a*10 x/10
可以获取后半段,然后跟前一半对比。
例如 x = 1221
a = 0;
a = a*10 x/10 = 1
x = 1221/10 = 122
以此循环,当a>x时跳出循环即可。
由于存在0和单双位数,我们需要根据实际答题情况多加一个if。
代码语言:javascript复制class Solution {
public boolean isPalindrome(int x) {
if(x < 0 || (x % 10 == 0 && x != 0)){
return false;
}
int a = 0;
while(a <= x){
if(a == x){
return true;
}
a = a * 10 x % 10; b
if(a == x){
return true;
}
x = x / 10;
}
return false;
}
}